EMZETT.
Войти

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