ER-модель: проектирование баз данных
Коротко: Модель «сущность–связь» набрасывает, какие вещи (сущности) существуют, какими свойствами обладают и как связаны, прежде чем создаются таблицы.
Подробнее: Перед построением базы данных нужно понять, что хранится. ER-модель (по Питеру Чену, 1976) — план для этого. Из неё позже выводятся таблицы. В профессиональном обучении это постоянная тема экзамена.
Подробности
Строительные блоки
- Сущность: объект реальности, например клиент, заказ, товар (позже становится таблицей).
- Атрибут: свойство, например имя, цена. Ключевой атрибут однозначно идентифицирует сущность (номер клиента).
- Связь: соединение между сущностями, например «клиент делает заказ».
- Кардинальность: сколько сущностей участвует.
Кардинальности
- 1 : 1: у человека ровно одно удостоверение личности.
- 1 : n: у клиента много заказов, каждый заказ принадлежит одному клиенту.
- n : m: студенты посещают несколько курсов, у курса несколько студентов.
Нотация может использовать указания (min, max), «воронью лапку» или диаграммы классов UML.
От ER-модели к таблицам
- Каждая сущность становится таблицей, каждый атрибут — столбцом, ключевой атрибут — первичным ключом.
- 1 : n: первичный ключ стороны «1» становится внешним ключом в таблице «n» (
order.customer_id). - n : m: нужна промежуточная таблица с обоими внешними ключами (
enrolment(student_id, course_id)), часто с собственными атрибутами, например оценкой. - 1 : 1: внешний ключ с
UNIQUEили общая таблица.
Хороший дизайн
Не храните данные дважды, а связывайте их. Если адрес меняется, это должно происходить в одном месте. Этому служат нормальные формы (нормализация): первая нормальная форма (атомарные значения), вторая (нет частичных зависимостей от ключа), третья (нет зависимостей между неключевыми атрибутами). Ради производительности можно сознательно денормализовать. Инструменты: draw.io, dbdiagram.io, MySQL Workbench, pgAdmin.
См. также: База данных, SQL, Моделирование: UML, EPC, BPMN, Индекс SQL