Базы данных
- Модели данных БД
- Реляционные БД. Все, что нужно знать
- Формирование требований к БД
- Работа с БД на проекте
База данных (БД) — структурированное хранилище данных.
Система управления базами данных (СУБД) — специализированное программное обеспечение, обеспечивающее доступ к базе данных. Главная функция СУБД – управление данными. СУБД поддерживает языки баз данных (например, 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. В реплике БД хранятся те же данные, что и в боевой, то есть из нее можно получить всю нужную информацию.
Для подключения чаще всего используются программы:
- MySql: https://www.mysql.com/products/workbench/
- PostgreSQL: https://www.pgadmin.org
Для подключения потребуется:
- адрес доступа и порт
- логин и пароль пользователя
- впн (для реплик чаще всего хватает офисного)
Дополнительно: