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