Databases
База данных в SQL Server состоит из коллекции таблиц, в которой хранится определенный набор структурированных данных. Таблица содержит коллекцию строк, также называемых записями или кортежами, и столбцов, также называемых атрибутами. Каждый столбец в таблице предназначен для хранения конкретного типа данных, например дат, имен, денежных сумм или чисел.
Основные сведения о базах данных
Компьютер может установить один или несколько экземпляров SQL Server. Каждый экземпляр SQL Server может содержать одну или несколько баз данных. В базе данных может содержаться одна или несколько групп объектов владения, которые называются схемами. В каждой схеме присутствуют объекты базы данных, такие как таблицы, представления и хранимые процедуры. Некоторые объекты, например сертификаты и асимметричные ключи, могут содержаться в базе данных, но при этом не находиться внутри схемы. Дополнительные сведения о создании таблиц см. в разделе Tables.
Базы данных SQL Server хранятся в файловой системе в файлах. Файлы могут быть объединены в группы файлов. Дополнительные сведения о файлах и файловых группах см. в разделе Database Files and Filegroups.
Когда пользователи получают доступ к экземпляру SQL Server, они определяются как имя входа. При получении доступа к базе данных пользователи идентифицируются как пользователи базы данных. Имя пользователя базы данных может быть основано на имени входа. Если автономные базы данных включены, то пользователь базы данных может быть создан не на основе имени входа. Дополнительные сведения о пользователях см. в разделе CREATE USER (Transact-SQL).
Пользователь, имеющий доступ к базе данных, может получить разрешения на доступ к объектам этой базы данных. Хотя разрешения и могут быть предоставлены отдельным пользователям, рекомендуется создавать роли базы данных, добавляя при этом пользователей базы данных к соответствующим ролям, а затем предоставлять разрешения ролям. Предоставление разрешений ролям, а не пользователям позволяет легко и понятно управлять процессом распределения разрешений, несмотря на постоянное изменение и рост числа пользователей. Дополнительные сведения о разрешениях ролей см. в статье CREATE ROLE (Transact-SQL) и субъекты (ядро СУБД).
Работа с базами данных
Большинство пользователей, работающих с базами данных, используют средство SQL Server Management Studio. Средство Management Studio имеет графический пользовательский интерфейс для создания баз данных и объектов в базах данных. В Management Studio также есть редактор запросов для взаимодействия с базами данных путем написания инструкций Transact-SQL. Management Studio можно установить с диска установки SQL Server или скачать из MSDN. Дополнительные сведения о средстве SQL Server Management Studio см. в статье SQL Server Management Studio (SSMS).
Создаем базу данных на примере службы доставки и разбираем запросы SQL
Сегодня мы рассмотрим пример базы данных и различные команды агрегации, группировки, сортировки, соединения таблиц и другое на примере MySQL. Сами данные представляют собой набор таблиц с произвольными названиями и значениями. Структура таблиц и их связи представлены ниже.
Для понимания дальнейшего Вам будут желательно начальные знания SQL и баз данных. Данное пособие поможет структурировать информацию, обновить память и может выступать в роли шпаргалки, которую вы можете использовать при надобности. Запросы на создание всех таблиц находятся тут.
С содержанием таблиц удобно ознакомиться в формате excel:
Как ни странно, но начнем мы анализ с таблицы, которая не упоминалась выше и не имеет связей с другими. Она представляет собой статистику за год по некоторым ключевым показателям.
Примечание: дабы не загружать статью всеми видами таблиц из запросов, визуально представлены будут только некоторые, а с остальными Вы без проблем можете поэкспериментировать сами.
Агрегация, группировка, сортировка
Сумма заказов за весь год:
SELECT SUM(amount_of_orders) AS orders_per_year FROM year_statistics;
Убывающая сортировка заказов по месяцам:
SELECT month_name, amount_of_orders
FROM year_statistics
ORDER BY amount_of_orders DESC;
Вывести месяц, где больше всего заказов:
SELECT month_name, amount_of_orders FROM year_statistics
WHERE amount_of_orders = (SELECT MAX(amount_of_orders)
FROM year_statistics);
Популярность районов по количествам клиентов:
SELECT district
FROM customers
GROUP BY district
ORDER BY COUNT(district) DESC;
Сколько каждый курьер доставил заказов:
SELECT courier_id, COUNT(order_id)
From delivery_list
WHERE date_arrived IS NOT NULL
GROUP BY courier_id;
Общие запросы и использование операторов IN, EXISTS, UNION и др.
Выборка клиентов, которые живут в районе «South»:
SELECT * FROM Customers
WHERE district IN (‘South’);
Информация о заказах, которые не были доставлены клиентам:
SELECT * FROM delivery_list
WHERE taken NOT IN (‘Yes’);
Запрос продуктов из меню, которые были заказаны:
SELECT menu_name FROM products
WHERE EXISTS
(SELECT * FROM orders_products
WHERE orders_products.product_id = products.product_id);
Запрос тех продуктов, которые не заказывали:
SELECT menu_name FROM products
WHERE NOT EXISTS
(SELECT * FROM orders_products
WHERE orders_products.product_id = products.product_id);
Получаем общую таблицу с информацией о клиентах и курьеров:
SELECT ‘Customer’ AS category, first_name, last_name, phone_number
FROM customers
UNION
SELECT ‘Employee’ AS category, first_name, last_name, phone_number
FROM courier_info;
INNER, NATURAL, CROSS, LEFT JOIN
Наиболее интересный запрос, который позволяет видеть детали заказа(номер, название блюда, количество и цена). К тому же здесь использован метод ROUND, позволяющий округлять дробные числа:
SELECT orders_products.order_id, products.menu_name, quantity,
ROUND(price*quantity, 2) AS total_price
FROM orders_products
INNER JOIN products ON orders_products.product_id = products.product_id
ORDER BY order_id, quantity;
Еще один довольно любопытный запрос, показывающий детальную информацию по заказам, а также время их доставки:
SELECT *, SEC_TO_TIME(TIMESTAMPDIFF(second, date_get, date_arrived))
AS time_of_delivery
FROM orders
NATURAL JOIN delivery_list;
Не совсем тривиальный запрос на выборку о том, что каждому курьеру на машине доступен любой район из таблицы клиентов:
SELECT DISTINCT courier_info.courier_id, customers.district
FROM courier_info
CROSS JOIN customers WHERE courier_info.delivery_type = ‘car’
ORDER BY courier_id;
И напоследок запрос на информацию об имени клиента, его мобильном телефоне и номере заказа:
SELECT customers.first_name, customers.last_name,
customers.phone_number, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;
Заключение
По итогу мы с вами разобрали множество полезных запросов на выборку SQL. Были показаны основные и более редкие операции. В сущности не важно, сколько данных в Вашей таблице — десять или тысяча, от этого запросы не поменяются, а всегда будут оставаться такими же. Главное, чтобы был понятен смысл, количество данных играет намного меньшую роль. Бояться и расстраиваться от того, что у Вас пока не получается получить желаемый запрос, совершенно глупо. Абсолютно нормально, если Вы гуглите, читаете книгу на интересующую тему, а результата так и нет. На это может уходить от десятка минут до целых дней. Мы все люди и одному человеку не под силу знать все. Наберитесь терпения, спросите у товарищей, на форумах и просто продолжайте искать сами, у Вас все получится! Удачи.
Что такое SQL: как устроен, зачем нужен и как с ним работать
Рассказываем о языке, на котором «говорят» большинство баз данных.


Иллюстрация: Оля Ежак для Skillbox Media

Иван Стуков
Журналист, изучает Python. Любит разбираться в мелочах, общаться с людьми и понимать их.
Вся информация, с которой вы сталкиваетесь в интернете, содержится в базах данных. В них же хранятся данные о сотрудниках и клиентах крупных компаний, научных и социологических исследованиях, расписании рейсов ближайшего к вам аэропорта и много о чём ещё.
Работать с этими циклопическими массивами информации вручную было бы долго, муторно и непродуктивно. Поэтому придумали SQL — специальный язык для общения с БД.
Что такое SQL
SQL (Structured Query Language, или язык структурированных запросов) — это декларативный язык программирования (язык запросов), который используют для создания, обработки и хранения данных в реляционных БД.
На чистом SQL нельзя написать программу — он предназначен только для взаимодействия с базами данных: получения, добавления, изменения и удаления информации в них, управления доступом и так далее.
Поэтому перед изучением SQL нужно разобраться, как устроены базы данных.
В каких базах данных используют SQL
Все БД можно поделить на два вида: реляционные и нереляционные. Язык SQL нужен для работы с первыми.
SQL настолько тесно связан с реляционными БД, что все нереляционные БД в противовес стали называть NoSQL. Вот и получилось, что SQL — это язык программирования, а NoSQL — тип баз данных.
Про реляционные БД часто говорят, что это набор двумерных таблиц. Прямо как в Excel: со столбцами, строками и ячейками. Это понятная визуализация, хотя и не совсем точная.
Представим, что мы создаём базу данных для небольшой строительной фирмы. Она проектирует загородные дома и передаёт проекты подрядчикам, которые занимаются самим строительством:

Чем же база данных отличается от таблицы? Тем, что в базе:
- У столбцов и строк нет определённого положения. Нельзя сказать, что столбец status находится до или после столбца num_floors, а имя Анастасии Романиной — до или после имени Дмитрия Пожарова.
- Каждый столбец диктует свой домен, то есть тип данных, к которому могут относиться его значения. Например, в столбцах cost и num_floors могут храниться только числа, а в столбце client — только строки.
- Каждая строка должна быть уникальной и не может повторять какую-то другую строку.
Из-за этих отличий применительно к базам данных используют другую терминологию. Столбец называется атрибутом, строка — записью или кортежем, а сама БД — их отношением друг к другу.
Нормализация в реляционных базах данных
Вернёмся к БД нашей строительной фирмы. Она может казаться удобной, но на самом деле не лишена недостатков.
Возьмём дом, который строится для Марии Медичиной. Сейчас он только проектируется, и мы ещё не выбрали для него подрядчика. Поэтому значение атрибута contractor равно NULL, то есть поле пустое. Но рано или поздно мы выберем подрядчика — например, ООО «Коттеджи». Тогда, кроме имени подрядчика, нам нужно будет заново указать его телефон. Сейчас значение этого атрибута тоже NULL. Пока что сделать это несложно.
В реальной же базе данных о подрядчике будет храниться гораздо больше информации: адрес, почта, ИНН, банковские реквизиты и так далее. Чтобы каждый раз переписывать всю эту информацию, придётся делать много лишних движений — а это не наш метод.
Если подрядчик вдруг сменит номер телефона, во всех старых записях останется устаревшая информация. А таких записей могут быть сотни и тысячи (если наша компания станет совсем успешной). Ровно та же ситуация с данными клиентов. Уследить за таким числом нюансов проблемно, и наша БД рискует превратиться в хранилище фейков.
Чтобы этого не происходило, в реляционных БД используют нормализацию. Это когда одну таблицу разбивают (декомпозируют) на несколько, а каждой записи присваивают уникальный ключ, по которому её можно идентифицировать.
Всего существует шесть нормальных форм. Чем выше номер формы, тем большему количеству правил она должна подчиняться. Приведём базу данных нашей строительной фирмы в соответствие с третьей нормальной формой.

Теперь, если у любого клиента или подрядчика сменится телефон, нужно будет внести изменения всего один раз. Добавлять новые записи теперь тоже будет проще.
Таблицы связывают между собой ключами. Они бывают трёх видов.
Первичный — указывает на запись, к которой он относится. В одном отношении не может быть нескольких записей с одним и тем же первичным ключом, и значение первичного ключа не может быть NULL. Первичным ключом может быть любое уникальное значение. Например, в таблице contractors так можно было бы использовать ИНН, если б он был в нашей базе.
Внешний — содержит ссылку на первичный ключ из другой таблицы и привязывает одну таблицу к другой.
Родительский — это первичный ключ, на который ссылается внешний ключ.
Язык программирования SQL: как управлять базами данных
Ещё одно отличие реляционных БД от обычных таблиц — в них нельзя вносить изменения напрямую. Для этого нужны СУБД, или системы управления базами данных.
СУБД — это посредник, который получает от пользователя команды, что сделать с базой данных, и выполняет их. Эти-то команды и написаны на языке SQL.

SQL — декларативный язык. Это значит, что при написании кода мы говорим, что хотим получить от программы. Логика того, как именно СУБД будет выполнять поставленную задачу, скрыта от нас.
Конечно, если вы хотите сделать свои запросы более быстрыми и эффективными или обезопасить базы данных, знать алгоритмы СУБД полезно. Но даже не разбираясь в этих тонкостях, вы сможете писать на SQL.
Все SQL-команды делятся на четыре вида:
- DDL (Data Definition Language, или язык описания данных). Их используют, чтобы создавать, изменять и удалять целые таблицы.
- DML (Data Manipulation Language, или язык управления данными). Их применяют к содержимому таблиц, чтобы создавать, изменять, удалять атрибуты и записи. Если нужно получить какую-то информацию из базы данных, то пользуются именно DML-операторами.
- DCL (Data Control Language, или язык контроля данных). Они нужны, чтобы выдавать конкретным пользователям доступ к базам данных и отзывать его.
- TCL (Transaction Control Language, или язык контроля транзакций). Позволяет управлять транзакциями. Транзакция — это набор из нескольких команд, которые выполняются поочерёдно. Если одна из команд внутри транзакции не срабатывает, то все уже совершённые действия отменяются. То есть транзакция может быть совершена либо полностью, либо никак.
Где применяют SQL
В индексе TOPDB популярность СУБД определяется по тому, как часто их гуглят. В декабре 2022 года первые пять мест в нём занимают именно реляционные СУБД — вместе они дают больше 70% поисковых запросов.

Рейтинг DB-Engines даёт похожие цифры. В декабре 2022 года доля реляционных СУБД составляет 71,7%.

Без баз данных не будет ни сайтов, ни сетевых приложений, ни крупных информационных систем — нужно же где-то хранить всю информацию. При этом реляционных БД — большинство, а чтобы управлять ими, нужен SQL. Поэтому мало какая вакансия бэкенд-разработчика обходится без требования владеть SQL. По крайней мере, мы такой не нашли.
Но умение работать с базами данных пригодится не только программисту.
Аналитики данных напрямую работают с «сырой» информацией. Чем лучше и свободнее они общаются с БД, тем проще им добывать и обрабатывать нужные данные в нужном виде.
Маркетологам SQL тоже будет полезен для решения аналитических задач.
Тестировщикам понадобится обращаться к БД, потому что это важный компонент любого информационного продукта.
Руководители, менеджеры и бизнес-консультанты благодаря информации из БД смогут лучше понимать, как функционирует их бизнес, и принимать более взвешенные решения.
Как работать с SQL: основные операторы
Запросы в SQL похожи на естественный английский язык и выглядят как полноценные предложения.
Например, если мы захотим в базе данных нашей строительной фирмы получить номер телефона ООО «Коттеджи», нам нужно написать такую команду:

Также в SQL существуют агрегатные функции. Они позволяют производить с данными дополнительные операции и указываются вместо атрибутов. Агрегатные функции записываются в формате FUNCTION(ATTRIBUTE).
Вот некоторые из них.
COUNT — считает количество записей в колонке.
SUM — складывает содержимое значений колонки.
MIN — указывает на минимальное значение в колонке.
MAX — указывает на максимальное значение в колонке.
AVG — считает среднее значение в колонке.
ROUND — округляет значение в колонке.
Для работы с инструкциями, которые содержат агрегатные функции, есть специальные операторы.
GROUP BY — группирует выходные значения для колонок, к которым применили агрегатную функцию.
HAVING — работает как WHERE, но может применяться к агрегатным функциям.
Конечно, это далеко не все операторы, функции и ключевые слова, которые есть в SQL. Но уже этот набор даёт широкие возможности для работы с базами данных.
Что запомнить
- SQL — это язык программирования для работы с реляционными базами данных.
- Самые распространённые базы данных — реляционные. Их можно представить как набор двумерных таблиц, связанных друг с другом ключами.
- SQL обращается к базам данных не напрямую, а через системы управления базами данных, илиСУБД.
- Производители СУБД пишут для языка SQL собственные расширения — диалекты. Но базовый синтаксис у всех них одинаковый.
- SQL-запросы состоят из операторов и складываются в полноценные предложения, которые похожи на естественный английский язык.
Больше интересного про код в нашем телеграм-канале. Подписывайтесь!
Что такое база данных
База данных — это совокупность множества таблиц, которые связаны между собой.

Лолита Кочиева
Автор статьи
23 октября 2022 в 18:05
Современные компании хранят огромное количество информации: данные об операциях, контрагентах, работниках, клиентах и т. д. Сохранять информацию выгодно, потому что данные можно проанализировать и найти новые способы роста прибыли бизнеса.
Если компания небольшая, данные можно сохранить в Google Sheets, файлах Excel или даже в печатном виде в папках. Но если это крупная компания с миллионами операций в день, Excel уже не подойдет: в одном файле помещается максимум около миллиона строк.
Файлы Excel и Google Sheets при сотнях тысяч строк начинают сильно тормозить — работать с информацией в них уже неудобно. Тут на помощь приходят базы данных (БД). В статье разберем виды БД, свойства и популярные системы управления базами данных, которые помогают превратить большой объем информации в удобную систему. В статье разберем виды БД, свойства и популярные системы управления базами данных (СУБД).
База данных: что это
База данных простыми словами — это место, где хранятся данные в электронном виде.
В базе данных может храниться что угодно: фотографии на телефоне, расположение игроков на карте в компьютерной игре, номера заказов в сервисе такси или доставки продуктов. Основная работа базы данных — сохранение, изменение, быстрый поиск.
Работу с базой данных невозможно представить без СУБД (системы управления базой данных). Она позволяет изменять, добавлять или удалять данные, получить из базы нужную информацию по запросу или восстановить базу данных. Одни из самых популярных СУБД — Oracle, MySQL, Microsoft SQL Server, PostgreSQL.
На курсе «Python-разработчик» целый блок посвящен изучению баз данных. Вы узнаете, как работать с СУБД SQLite и PostgreSQL и программной библиотекой SQLAlchemy для работы с реляционными СУБД. Сделаете проект, где компания сможет выбирать поставщика товаров, исключить поставку одинаковых товаров от разных поставщиков, искать и сортировать информацию. По окончании курса с поддержкой нашего центра карьеры найдете первую работу.
Чем база данных отличается от таблиц Excel и Google Sheets
Внешне Excel, Google Sheets и базы данных похожи, но разница есть. В БД можно:
- Хранить больше записей и быстро их обрабатывать.
- Установить отношения между несколькими таблицами — связи, благодаря которым одновременно обрабатывают данные в нескольких таблицах одной БД. Еще связи нужны, чтобы обеспечить целостность данных и чтобы в базе не было потерянных записей. Если удалить из БД клиента, информация о нём удаляется во всех связанных таблицах. Если добавить — добавляется.
- Работать с расширенным набором функций: поиск, фильтрация, сортировка, агрегация и т. д.
Excel и Google Sheets ограничены размером файла. Они подойдут, если нужно работать с небольшим количеством данных и выполнять базовые операции. Для хранения и анализа больших объемов структурированных данных понадобится БД.
Свойства базы данных
Свойства баз данных:
- Быстродействие. Excel и Google Sheets тормозят, когда много данных. В них сложнее найти нужное. В БД проще и быстрее — и ничего не тормозит.
- Простота получения и обновления данных. За два клика можно обновить или добавить данные в базу.
- Безопасность. В большинстве БД можно настраивать разные уровни доступа к таблицам. Например, давать разрешение читать и редактировать не всем пользователям, а только некоторым.
- Многопользовательский доступ. С БД одновременно могут работать несколько человек.
- Объем хранимых данных. База данных дает возможность сохранять миллионы различных записей.
Как хранится информация в БД
По способу хранения данных БД делятся на:
- Централизованные — вся информация хранится на одном компьютере. Это может быть автономный ПК или сервер, к которому есть доступ у пользователей.
- Распределенные — информация распределена по разным компьютерам. Используется в локальных и глобальных компьютерных сетях.
База данных — это информационный склад. Сам по себе этот склад не может найти и обработать нужную клиенту информацию. Здесь в работу вступает СУБД. Система управления базой данных — это программное обеспечение, которое позволяет вносить изменения и отправлять запросы в базу данных, структурировать информацию и при необходимости восстановить базу с нуля.
Приходите на курс «Java-разработчик» — это не только подробные знания и практические навыки по программированию, работе с СУБД и языком запросов SQL. Еще 440 часов обучения от топовых экспертов в области, 5 проектов в портфолио, помощь в составлении резюме и диплом установленного образца. Благодаря этому вы легко найдете работу.
Типы баз данных
Существует огромное множество типов баз данных. Наиболее часто используют следующие типы:
- реляционные,
- нереляционные,
- документоориентированные,
- графовые,
- колоночные (столбцовые),
- key-value,
- сетевые,
- иерархические.
✔️ Реляционные. Состоят из множества таблиц, а между таблицами есть связи.
Две основные характеристики реляционной базы:
- Информация лежит в некотором количестве таблиц и распределена по ним по смыслу.
- Таблицы не существуют независимо друг от друга — они связаны определенными столбцами.
Чаще всего специалисты пользуются реляционными базами данных. Это базы, состоящие из множества таблиц, между которыми есть связи. Реляционные БД используют везде, где есть необходимость в сохранении огромных объемов информации: в IT-компаниях, банках, магазинах и так далее.
Обычно данные в реляционной БД хранят во вложенных таблицах. Информацию вносят с помощью записей.
Таблица — это вложенный объект по отношению к базе данных. Это значит, что база данных содержит внутри себя некоторое количество таблиц. Таблицы хранят разные группы данных. Например, одна таблица может хранить номера телефонов клиентов, а другая — список товаров на складе.
Таблица выглядит как лист в Google Sheets или Excel. Она состоит из определенного количества строк и столбцов. У каждого столбца бывает свое имя. В каждом из столбцов содержатся данные, относящиеся к заголовку столбца.
Запись — это одна строка в таблице в базе данных. Если менеджер добавляет данные нового пассажира или водителя в систему баз данных, то в таблице появляется новая запись.
К значениям столбца обычно есть некоторые требования. Часто в столбце реляционной базы данных хранятся данные одного типа: числа, тексты, файлы или другое.
Если создать реляционную базу данных, например, для такси, то она может содержать такие таблицы:
- заказы такси;
- таксисты;
- клиенты (или пассажиры);
- автомобили.
База данных такси содержит четыре таблицы, в каждой из которых — определенное количество столбцов. Например, в таблице «Клиенты» три столбца: «ID клиента», «Телефон клиента» и «Город клиента».
Можно было бы добавить всю информацию по заказам, таксистам, клиентам и автомобилям в одну таблицу, но она получилась бы слишком громоздкой. Анализировать и строить модели машинного обучения на основе такой таблицы было бы очень сложно, потому что модели машинного обучения нужны данные с определенным типом закономерностей. Удобнее, когда информация — в реляционной базе данных. То есть в разных таблицах в зависимости от смысла.
Реляционные базы данных не годятся для хаотичных неструктурированных данных, которые сложно распределить по нескольким таблицам в зависимости от смысла.
Еще бывают бизнесы и продукты, где необходим быстрый ответ на запрос, например онлайн-торги. Для них реляционные БД не подходят — лучше использовать другой тип.
✔️ Нереляционные БД. Нереляционные системы баз данных — базы данных, в которых информация содержится в виде документов JSON — стандартный текстовый формат, в котором данные структурированы на основе определенного языка программирования — джаваскрипт. Это язык программирования, который используется, например, для механизма обновления ленты новостей в соцсетях, анимации, интерактивных карт и многого другого. А в случае БД помогает структурировать данные.
✔️ Документоориентированные базы данных. По названию можно понять, что в базе данных такого типа единицей информации является документ. Обычно нет никаких ограничений по формату этого документа — он может быть в json-формате, xml, int и т. д.
В документоориентированных базах данных нет схемы данных — это значит, что можно добавлять новые данные как угодно и в каком угодно формате, не требуя, чтобы у всех остальных записей БД была одинаковая структура.
Примеры таких БД — MongoDB, Couchbase, Firebase.
✔️ Key-value базы данных. В такой базе данных удобно хранить информацию, которая легко представляется в виде пары «ключ — значение». Ключ — это специальное поле в таблице с уникальной информацией. Эти поля используют для хранения уникальных идентификаторов объектов, например ID клиента или кода товара. Значение указывает на характеристики ключа.
Самый главный плюс key-value-баз — они быстро выдают значение по ключу. Поэтому такие БД часто используют в задачах, когда ответ от базы важно получать в режиме онлайн.

Пример БД key-value
✔️ Графовые. Этот тип баз данных хранит информацию в графах. Графы — математический термин и означает совокупность двух множеств: множества объектов — вершин и множества парных связей этих объектов — ребер. Пример графа — дерево каталогов в компьютере: диски, папки и файлы — вершины, вложенность файлов и папок в папки и диски — ребра.
Графовый тип подходит, когда нужно получить информацию об основном объекте и об объектах, которые с ним связаны.
Пример проекта, в котором идеально использовать графовые базы данных, — обычная социальная сеть вроде ВК. Графовая база данных поможет быстро найти всю необходимую информацию не только нужного нам пользователя, но и всех его друзей, групп и сообществ.
✔️ Столбцовые. В столбцовые (или колоночные) БД данные записывают в столбцы, а не в строки.
Колоночные БД удобны, когда нас интересует информация не во всех столбцах, а в каких-то конкретных. Искать по конкретным столбцам быстрее, чем по строкам.
Допустим, у нас есть таблица, где 100 миллионов записей за год. В колонке «Дата» будут храниться только 366 записей, потому что в году 366 дней — включая високосные. Можно заменить 100 миллионов отсортированных записей в этом поле на 366 пар значений вида — и в таком виде хранить их в базе. Такая запись занимает в 100 тысяч раз меньше места и ускоряет выполнение запросов.
Денис Кондратьев, программист с опытом 17 лет, разработчик компьютерных игр, рассказывает о сетевых и иерархических типах баз данных.
Сетевые и иерархические базы данных — это два примера структур данных, используемых в системах управления базами данных (СУБД). Они впервые появились в 60–70-х годах и служат основой для многих современных концепций и практик в области управления данными.
✔️ Сетевая база данных — это тип БД, в которой данные организованы по принципу сети или связанной структуры. То есть у одной записи может быть несколько родительских и дочерних записей.
Представьте сетевую базу данных для больницы. У вас есть таблицы «Пациенты», «Врачи» и «Больницы». Пациент может наблюдаться у нескольких врачей: то есть может быть несколько родительских записей. А один врач может наблюдать разных пациентов: у врача несколько дочерних записей. Так врачи и пациенты образуют связанную структуру, или сеть отношений. Еще у больницы множество врачей и пациентов, а врач может быть связан с несколькими больницами. Это создает дополнительные связи в сети.
✔️ Иерархическая база данных строится по принципу «родитель — ребенок», где каждый дочерний элемент имеет только один родительский элемент. Эта модель организует данные в древовидной структуре и идеально подходит для сценариев, где нужно хранить информацию в предопределенной и строго упорядоченной иерархии.
Рассмотрим систему управления файлами на компьютере. Местоположение каждого файла уникально в иерархической структуре каталогов или папок. Например, папка «Мои документы» может содержать подпапки «Фотографии», «Видео» и «Текстовые документы». В этих подпапках есть собственные файлы или дополнительные подпапки. В этом примере «Мои документы» — родительский элемент для «Фотографий», «Видео» и «Текстовых документов», а эти элементы, в свою очередь, могут быть родительскими элементами для своих файлов или подпапок.
Эта структура напоминает иерархическую базу данных, где у элемента есть только один «родитель», но может быть несколько «детей» или подэлементов.
Иерархические базы данных были весьма популярны в ранних СУБД, но они менее гибкие по сравнению с сетевыми или реляционными базами данных.
Как получить информацию из БД и связать данные между собой
Чтобы получать, добавлять, сохранять нужные данные в базе данных, в большинстве случаев используют язык запросов SQL. Это простой язык программирования, который помогает извлечь необходимый срез данных из базы.
Чтобы обозначить связи в БД, используют primary key и foreign key.
Primary key — это столбец (или группа столбцов) в таблице с уникальными значениями. Если брать пример с той же базой такси — primary key каждой таблицы там обозначен светло-зеленым цветом.

Пример реляционной БД такси
В верхней таблице, которая хранит заказы такси, каждая строка будет содержать в себе информацию об отдельном заказе со своим уникальным ID. Это значит, что в таблице не будет строк с одной и той же информацией.
Foreign key — это такой столбец в таблице, в котором содержится primary key из другой таблицы. На картинке foreign key выделены серым. ID автомобиля является primary key в таблице с автомобилями, но во всех других таблицах (например, в таблице с таксистами) ID автомобиля будет являться foreign key.
Выстраивание связей между таблицами — не единственная функция foreign и primary key. Еще они могут помочь контролировать корректность записей в таблицах. Например, если мы хотим добавить запись с новым таксистом в таблицу с таксистами и неправильно написали ID автомобиля, то база данных сообщит об этом. База не найдет соответствующий ID автомобиля в таблице с автомобилями и выдаст сообщение, что где-то произошла ошибка.
Примеры использования баз данных
Базы данных сейчас используют почти везде: это один из надежных способов ничего не потерять.
На сайтах все статьи и картинки хранятся в базах данных. Когда пользователь заходит на сайт, контент извлекается из БД. Чтобы хранить фото, контакты, музыку на смартфоне, тоже используют базы данных. Благодаря этому пользователь может получить молниеносный доступ к информации.
На любом сайте или в приложении, где есть регистрация, логины и пароли тоже хранятся в базе данных.
В большой компании данные о сотрудниках — имена, данные документов, банковские счета для зарплаты — всё хранится в базах данных. В маленькой компании информацию можно иногда хранить в обычной таблице.
Популярные СУБД
СУБД — система управления базами данных. Это инструменты, с помощью которых запрашивают данные в базе, изменяют или создают базы. В компаниях наиболее популярны такие бесплатные СУБД:
- Это реляционная СУБД. Ее используют в Google, LinkedIn, Amazon, Meta* и других крупных и средних компаниях.
- Это объектно-реляционная СУБД. Она поддерживает большое количество разных языков программирования и типов данных. Для этой СУБД можно использовать существующие расширения или писать собственные — создавать скрипты для новых объектов.
- Это нереляционная документоориентированная СУБД. Такая система может работать с огромными массивами данных весом от 1 Тб.
- Redis (Remote Dictionary Server). Это открытая NoSQL-система управления базами данных. То есть она не использует язык запросов SQL, а запрашивает данные с помощью других языков программирования и конструкций. Redis полезна, чтобы хранить игровые сессии, рейтинговые таблицы, состояние игроков, статистику игр и других временных или постоянных данных, которые нужно обрабатывать быстро.
Полезные материалы для изучения баз данных
Рассказывает Денис Кондратьев, программист с опытом 17 лет, разработчик компьютерных игр.
Новичкам полезно изучить:
Книги
«Базы данных: Введение в теорию и методологию» А. С. Маркова, К. Ю. Лисовского. В книге — обзор теории баз данных и как их применять на практике.
Database System Concepts А. Силбершатца, Г. Ф. Корта и С. Сударшана. Это классический учебник, который подробно рассказывает о концепциях баз данных.
Онлайн-курсы
Introduction to Databases на Coursera от Стэнфордского университета. Этот курс включает различные виды баз данных: реляционные, иерархические, сетевые и объектно-ориентированные.
Databases на edX от Harvard University. В курсе — про важные концепции: язык SQL, реляционные базы данных и т. д.
Любой курс по разработке от Skypro.
За 10–12 месяцев вы получите нужные основы, выполните практические задания и сразу сможете работать с базами данных. Готовый проект положите в портфолио — это увеличит ваш вес в глазах работодателей. С поддержкой экспертов нашего центра карьеры сможете составить сильное резюме, сопроводительное письмо и найти хорошую работу.
Курс Skypro «Аналитик данных».
За 12 месяцев научитесь работе с СУБД, освоите язык запросов SQL, Excel, основы Python, программы для визуализации данных и сможете уверенно презентовать результаты анализа заказчику. После прохождения курса гарантируем трудоустройство и выдаем диплом о профпереподготовке.
Веб-сайты и блоги
W3Schools — множество учебников и руководств по языку SQL и другим темам, связанным с базами данных.
Stack Overflow — ответы на вопросы о базах данных и SQL.
Database Journal — статьи, советы, учебники и новости о различных типах баз данных.
Интерактивные платформы для обучения
Codecademy — интерактивные курсы по SQL и работе с базами данных.
SQLZoo — интерактивные упражнения для изучения языка SQL.
«Важно помнить, что изучение баз данных — это не только о том, чтобы усвоить SQL или какой-то конкретный тип базы данных. Это про понимание основных принципов проектирования баз данных, моделирования и управления данными».
Денис Кондратьев
программист, разработчик компьютерных игр
Если хотите анализировать сложные данные, стать продвинутым пользователем Excel и научиться работать с языком запросов SQL, пройдите курс «Аналитик данных». Освоите профессию с нуля, даже если совсем нет опыта в IT. Мы не только дадим знания, но и доведем до новой работы — или вернем вам деньги за курс. Гарантию прописываем в договоре.