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