Skip to main content

Базы данных

База данных (БД) — структурированное хранилище данных.

Система управления базами данных (СУБД) — специализированное программное обеспечение, обеспечивающее доступ к базе данных. Главная функция СУБД – управление данными. СУБД поддерживает языки баз данных (например, SQL), а также отвечает за копирование и восстановление информации после сбоев. Чаще всего используются СУБД MySQL, PostgreSQL, SQLite, Oracle, MongoDB.

Модели данных БД#

Реляционные. СУБД, в которых данные хранятся как набор связанных записей и атрибутов в двумерной таблице. На Ensi используется именно этот подход. Примеры моделей данных сервисов Ensi есть на странице документации.

Нереляционные модели:

Иерархические. В этой модели данных используется представление БД в виде древовидной структуры, состоящей из данных разных уровней.

Сетевые. Данная модель является расширением иерархического подхода. Иерархическая модель подразумевает, что запись-потомок может иметь строго одного предка, в то время как в сетевой структуре потомок может иметь любое количество предков.

Объектно-ориентированные. Для управления БД, основанными на объектной модели данных. Как правило основываются на объектно-ориентированных языках программирования. В ООБД данные моделируются в виде объектов, их атрибутов, методов и классов.

Объектно-реляционные. Объединяет в себе концепции реляционной модели с дополнительными объектно-ориентированными возможностями (объекты, классы, наследование).

Реляционные БД. Все, что нужно знать#

СущностьЧеловек, место или объект в реальном мире, данные о которых могут храниться в БД. В таблицах хранятся данные, которые представляют один тип сущности. Например — база данных OMS имеет таблицу заказов для хранения информации о них. Таблица заказов хранит эту информацию (номер заказа, дату заказа и т.д.) в виде набора атрибутов (столбцы в таблице) для каждого заказа.
Отношение (связь)

Отношение или связь между сущностями, которые имеют какое-то отношение друг к другу. Например, каждый заказа связан с конкретным клиентом, который его сделал.

Есть три типа связи:

- Один-к-одному (1:1)

- Один-ко-многим (1:N)

- Многие-ко-многим (M:N). Для реализации этой связи в СУБД как правило создается промежуточная таблица.

Ключ

Первичный ключ (Primary key) - столбец или набор столбцов, которые однозначно идентифицируют каждую строку в таблице.

Внешний (вторичный) ключ (Foreign key) - поддерживает ссылочную целостность, обеспечивая связь между данными в двух таблицах. Внешний ключ в дочерней таблице как правило ссылается на первичный ключ в родительской таблице.

Индекс

Индексы относятся к методу настройки производительности, позволяющему быстрее извлекать записи из таблицы. Индекс создает отдельную структуру для индексируемого поля и, следовательно, позволяет быстрее получать данные.

Есть три типа индексов:

Уникальный индекс (Unique Index): этот индекс не позволяет полю иметь повторяющиеся значения, если столбец индексируется уникально. Если первичный ключ определен, уникальный индекс может быть применен автоматически.

Кластеризованный индекс (Clustered Index): этот индекс меняет физический порядок таблицы и выполняет поиск на основе значений ключа. Каждая таблица может иметь только один кластеризованный индекс.

Некластеризованный индекс (Non-Clustered Index): не изменяет физический порядок таблицы и поддерживает логический порядок данных. Каждая таблица может иметь много некластеризованных индексов.

Типы данныхТипы данных зависят от СУБД. Здесь приведены встроенные типы данных PostgreSQL, используемого на Ensi. Часто на проектах используется MySQL, вот типы данных, встроенные в этой СУБД.
Нормализация

Нормализация — процесс организации данных, цель которого избежать дублирования и избыточности.

Существует много последовательных уровней нормализации. Это так называемые нормальные формы. Каждая последующая нормальная форма включает предыдущую. Первых трех нормальных форм обычно достаточно.

- Первая нормальная форма (1NF) — нет повторяющихся групп в строках

- Вторая нормальная форма (2NF) — каждое неключевое (поддерживающее) значение столбца зависит от всего первичного ключа

- Третья нормальная форма (3NF) — каждое неключевое значение зависит только от первичного ключа и не имеет зависимости от другого неключевого значения столбца

Пример нормализации

Формирование требований к БД#

При спецификации модели данных аналитик должен сделать следующее:

  • определить список объектов (сущностей) системы/сервиса
  • определить свойства этих объектов (параметры)
  • определить отношения между объектами и их тип

Для описания МД рекомендуется использовать ERD или UML Диаграмма классов (Class diagram). Модели данных должны соответствовать Database Design Guide.

МД полезно готовить уже на старте проекта. Это поможет и для выяснения требований, и для проектирования UX, и на старте разработке. При уточнении требований и появлений новых, МД нужно не забывать обновлять. Часто МД - один из важных документов в закрывающей документации про проекту/этапу, так как в ней содержится информация, позволяющая понять функционал и состав системы.

Работа с БД на проекте#

На проекте аналитику часто приходится взаимодействовать с БД для:

  • выяснения структуры хранения данных (в каких конкретно сущностях хранятся данные, какие есть связи)
  • ad-hoc анализа (сколько пользователей сейчас зарегистрировано, есть ли товары с определенным признаком и сколько их)
  • тестирования (записываются ли данные в БД при определенном действии, как конкретно данные записываются)

Общепринятая практика – использовать для таких целей реплику БД, к которой аналитикам предоставляются права уровня read/select. В реплике БД хранятся те же данные, что и в боевой, то есть из нее можно получить всю нужную информацию.

Для подключения чаще всего используются программы:

Для подключения потребуется:

  • адрес доступа и порт
  • логин и пароль пользователя
  • впн (для реплик чаще всего хватает офисного)

Дополнительно:

  1. Характерные ошибки при проектировании БД