Модель «сутність — зв'язок»
Модель «сутність-зв'язок» (ER-модель) (англ. Entity-relationship model або entity-relationship diagram) — модель даних, яка дозволяє описувати концептуальні схеми за допомогою узагальнених конструкцій блоків. ER-модель — це метамодель даних, тобто засіб опису моделей даних. Існує ряд моделей для представлення знань, але одним з найзручніших інструментів уніфікованого представлення даних, незалежного від програмного забезпечення, що його реалізує, є модель «сутність-зв'язок». Важливим є той факт, що з моделі «сутність-зв'язок» можуть бути породжені всі існуючі моделі даних (ієрархічна, мережева, реляційна, об'єктна), тому вона є найзагальнішою.
Модель сутність-зв'язок є результатом систематичного процесу, який описує та визначає деяку предметну область. Вона не визначає сам процес, а лише візуалізує його. Дані представлені у вигляді компонентів (сутностей), які пов'язані між собою певними зв'язками, які виражають залежності і вимоги між ними, такі як: одна будівля може бути розділена на декілька квартир, але одна квартира може бути розташована лише в одній будівлі. Сутності можуть мати різні властивості (атрибути), які характеризують їх. Діаграми, створені для представлення цих сутностей, атрибутів і зв'язків графічно, називають сутність-зв'язок діаграмами.
ER-модель зазвичай реалізується в вигляді баз даних. У разі реляційної бази даних, в якій зберігаються дані в таблицях, кожен рядок кожної таблиці являє собою один екземпляр сутності. Деякі поля даних в цих таблицях вказують на індекси в інших таблицях. Такі поля є покажчиками фізичної реалізації зв'язків між сутностями.
Коли ми говоримо про сутність, ми зазвичай говоримо про деякий аспект реального світу, який можна виділити поміж інших аспектів. Сутність — це збірне поняття, деяка абстракція реального об'єкта, процесу, явища чи деякого уявлення про об'єкт. Хоча термін сутність найвживаніший, потрібно розрізняти поняття типу сутності та екземпляру сутності. Поняття тип сутності стосується набору однорідних особистостей, предметів, подій або ідей, що виступають як ціле. Екземпляр сутності стосується конкретної речі в наборі. Наприклад, типом сутності може бути МІСТО, а екземпляром — Київ, Львів і т. д.
Виділяють три види сутностей: стрижнева, асоціативна (асоціація) і характеристична (характеристика):
- Стрижнева (сильна) сутність — незалежна від інших сутність. Стрижнева сутність не може бути асоціацією, характеристикою чи позначенням.
- Асоціативна сутність (або асоціація) виражає собою зв'язок «багато до багатьох» між двома сутностями. Є цілком самостійною сутністю. Наприклад, між сутностями ЧОЛОВІК і ЖІНКА існує асоціативний зв'язок, висловлюваний асоціативної сутністю ШЛЮБ.
- Характеристичну сутність ще називають слабкою сутністю. Вона пов'язана з сильнішою сутністю зв'язками «один до багатьох» і «один до одного». Характеристична сутність описує або уточнює іншу сутність. Вона повністю залежить від неї і зникає зі зникненням останньої. Наприклад, сутність Зарплата є характеристикою конкретних працівників підприємства і не може в такому контексті існувати самостійно — при видаленні екземпляра сутності Працівника повинні бути видалені і екземпляри сутності Зарплата, пов'язані з видаленим працівником.
- Позначення це така сутність, з якої інші сутності пов'язані за принципом «багато до одного» або «один до одного». Позначення, на відміну від характеристики є самостійною сутністю. Наприклад, сутність Факультет позначає приналежність студента до цього підрозділу інституту, але є цілком самостійною.
При моделюванні заведено виражати (іменувати) сутність іменником або іменником з прикметником, що характеризує його, а зв'язок дієсловом, що поєднує два чи більше іменників.
Сутності та зв'язки можуть мати свої атрибути. Наприклад, сутність громадянин має атрибут номер паспорту, а зв'язок має між сутностями гравець та акаунт володіє атрибутом останній вхід.
Кожна сутність (якщо це не слабка сутність) має мати мінімальний набір унікальних атрибутів, що зветься первинним ключем.
Сутності відображуються у вигляді прямокутників, зв'язки у вигляді ромбів. Якщо сутність бере участь у відносинах, вони пов'язані лінією. Якщо відносини не є обов'язковими, то лінія пунктирна. Атрибути позначаються в вигляді овалів і пов'язані з однією сутністю або зв'язком. Овал похідних атрибутів зображується пунктирним контуром.
Нотацію «вороняча лапка» (англ. crow's foot) запропонував Гордон Еверест (англ. Gordon Everest) у статті 1976 року[1] під назвою «обернена стрілка» (англ. inverted arrow), однак частіше за все цю нотацію називають «вороняча лапка» або ж «виделка» (англ. fork).
Згідно з цією нотацією, сутність подається у вигляді прямокутника, де сутність виражається іменником. Ім'я сутності має бути унікальним в рамках однієї моделі.
Зв'язок зображується лінією, яка пов'язує дві сутності, що беруть участь у відношенні. Ступінь кінця зв'язку вказується графічно, множинність зв'язку зображується у вигляді «виделки» на кінці зв'язку. Модальність зв'язку так само зображується графічно — необов'язковість зв'язку позначається кружком на кінці зв'язку.
Атрибути сутності записуються усередині прямокутника, що зображує сутність і виражаються іменником в однині (можливо, з уточнювальними словами). Серед атрибутів виділяється ключ сутності — ненадлишковий набір атрибутів, значення яких в сукупності є унікальними для кожного екземпляра сутності.
Модель сутність-зв'язок була запропонована в 1976 Пітером Пін-Шен Ченом, американським професором комп'ютерних наук в університеті штату Луїзіана. Насправді, Чен не придумував цієї моделі самотужки, він взяв ідеї з раніших робіт наприклад, А. Брауна та інших. Але Чен зробив дуже багато для формалізації та популярності ERM, а також для її проникнення в літературу.
- ↑ G. Everest, «BASIC DATA STRUCTURE MODELS EXPLAINED WITH A COMMON EXAMPLE», in Computing Systems 1976, Proceedings Fifth Texas Conference on Computing Systems, Austin, TX, 1976 October 18-19, pages 39-46. (Long Beach, CA: IEEE Computer Society Publications Office).
- An Entity Relationship Diagram Example [Архівовано 25 січня 2009 у Wayback Machine.]. Demonstrates the crow's feet notation by way of an example.
- «Entity-Relationship Modeling: Historical Events, Future Trends, and Lessons Learned» [Архівовано 4 червня 2011 у Wayback Machine.] by Peter Chen.
- «English, Chinese and ER diagrams» [Архівовано 28 грудня 2005 у Wayback Machine.] by Peter Chen.
- Case study: E-R diagram for Acme Fashion Supplies by Mark H. Ridley.
- Logical Data Structures (LDSs) — Getting started [Архівовано 16 травня 2016 у Portugese Web Archive] by Tony Drewry.
- Introduction to Data Modeling