ERM (Entity-Relationship Model)
Персональні інструменти
ERM англ.entity-relationship model-Модель сутність-зв'язок (ER-модель)) - модель даних, що дозволяє описувати концептуальні схеми предметної області. ER-модель використовується при високорівневому (концептуальному) проектуванні бази даних. З її допомогою можна виділити ключові сутності та позначити зв'язки, які можуть встановлюватись між цими сутностями. Під час проектування баз даних відбувається перетворення ER-моделі на конкретну схему бази даних на основі обраної моделі даних (реляційної, об'єктної, мережної або ін.). ER-модель є формальною конструкцією, яка сама по собі не наказує ніяких графічних засобів її візуалізації. Як стандартна графічна нотація, за допомогою якої можна візуалізувати ER-модель, була запропонована діаграма сутність-зв'язок (ER-діаграма) (entity-relationship diagram, ERD). Поняття ER-модель та ER-діаграма часто помилково не розрізняють, хоча для візуалізації ER-моделей запропоновано й інші графічні нотації (див. нижче).
Зміст
Історія створення
Модель «сутність-зв'язок» була запропонована в 1976 Пітером Пін-Шен Ченом (Peter Pin-Shen Chen), американським професором комп'ютерних наук в університеті штату Луїзіана.
Нотації (графічні діаграми)
Нотація Пітера Чена
Проста ER-модель MMORPG з використанням нотації Пітера Чена Багато сутностей зображуються у вигляді прямокутників, безлічі відносин зображуються у вигляді ромбів. Якщо сутність бере участь у відношенні, вони пов'язані лінією. Якщо ставлення є обов'язковим, то лінія пунктирна. Атрибути зображуються у вигляді овалів і зв'язуються лінією зодним ставленням чи з однією сутністю.
Crow's Foot
Приклад відносини між сутностями згідно з нотацією Crow's Foot Ця нотація була запропонована Гордоном Еверестом (англ. Gordon Everest) під назвою Inverted Arrow («перевернута стрілка»), проте зараз найчастіше звана Crow's Foot («вороня лапка») або Fork («вилка») .
Згідно з цією нотацією,сутністьзображується у вигляді прямокутника, що містить її ім'я, що виражається іменником. Ім'я сутності має бути унікальним у межах однієї моделі. При цьому ім'я сутності - це ім'я типу, а не конкретного екземпляра даного типу. Примірником сутності називається конкретний представник цієї сутності.
Зв'язокзображується лінією, яка пов'язує дві сутності, що беруть участь у відношенні. Ступінь кінця зв'язку вказується графічно, множина зв'язку зображується у вигляді «вилки» на кінці зв'язку. Модальність зв'язку також зображується графічно - необов'язковість зв'язку позначається гуртком на кінці зв'язку. Найменування зазвичай виражається одним дієсловом у дійсному способі теперішнього часу: «Має», «Належить» і т.д.; або дієсловом з словами, що пояснюють: «Включає в себе», і т.п. Найменування може бути одне для зв'язку або два для кожного з кінців зв'язку. У другому випадку назва лівого кінця зв'язку вказується над лінією зв'язку, а правого – під лінією. Кожна з назв розташовуються поряд із сутністю, до якої воно відноситься.
Атрибутисутності записуються всередині прямокутника, що зображує сутність і виражаються іменником в однині (можливо, з уточнюючими словами). Серед атрибутів виділяється ключ сутності - не надмірний набір атрибутів, значення яких у сукупності є унікальними для кожного екземпляра сутності. [1]
Елементи моделі
Будь-який фрагмент предметної області може бути представлений як безліч сутностей, між якими існує кілька зв'язків. Дамо визначення:
Сутність(entity) - це об'єкт, який може бути ідентифікований якимось способом, що відрізняє його від інших об'єктів. Приклади: конкретна людина, підприємство, подія тощо.
Набір сутностей(entity set) - безліч сутностей одного типу (що мають однакові властивості). Приклади: усі люди, підприємства, свята тощо. Набори сутностей не обов'язково повинні бути такими, що не перетинаються. Наприклад, сутність, що належить до набору ЧОЛОВІКИ, також належить набору ЛЮДИ.
Сутність фактично являє собою безліч атрибутів, які описують властивості всіх членів даного набору сутностей.
розглянемо безліч працівників якогось підприємства. Кожного можна описати з допомогою характеристик табельний номер, ім'я, вік. Тому, сутність СПІВРОБІТНИК має атрибути ТАБЕЛЬНИЙ_НОМЕР, ІМ'Я, ВІК. Використовуючи нотацію мови Pascal, цей факт можна представити як:
Надалі для визначення сутності та її атрибутів будемо використовувати позначення виду
Наприклад, відділи, на які підрозділяється підприємство, і в яких працюють співробітники, можна описати як ВІДДІЛ (НОМЕР_ВІДДІЛУ, НАЙМЕННЯ).
Безліч значень (область визначення) атрибута називається доменом. Наприклад, для атрибуту ВІК домен (назвемо його ЧИСЛО_ЛІТ) задається інтервалом цілих чисел великих нуля, оскільки людей з негативним віком не буває.
У згаданій статті П.Чена атрибут визначається як функція, що відображає набір сутностей на набір значень або декартове добуток наборів значень. Так атрибут ВІК виробляєвідображення набір значень (домен) ЧИСЛО_ЛІТ. Атрибут ІМ'Я здійснює відображення в декартовому добутку наборів значень ІМ'Я, Прізвище та ПО БАТЬКІВСТВІ.
Звідси визначаєтьсяключ сутності- група атрибутів, така, що відображення набору сутностей відповідну групу наборів значень є взаємнооднозначним відображенням. Іншими словами: ключ сутності - це один або більше атрибутів, що унікально визначають цю сутність. У нашому прикладі ключем сутності СПІВРОБІТНИК є атрибут ТАБЕЛЬНИЙ_НОМЕР (звичайно, тільки в тому випадку, якщо всі табельні номери на підприємстві унікальні).
Связь(relationship) - це асоціація, встановлена між кількома сутностями. Приклади:
- оскільки кожен співробітник працює в якомусь відділі, між сутностями СПІВРОБІТНИК і ВІДДІЛ існує зв'язок "працює в" або ВІДДІЛ-ПРАЦІВНИК;
- оскільки один із працівників відділу є його керівником, то між сутностями СПІВРОБІТНИК і ВІДДІЛ є зв'язок "керує" або ВІДДІЛ-КЕРІВНИК;
- можуть існувати і зв'язки між сутностями одного типу, наприклад зв'язок БАТЬКІВ - ПОТОМОК між двома сутностями ЛЮДИНА;
На жаль, немає загальних правил визначення, що вважати сутністю, що зв'язком. У розглянутому вище прикладі ми поклали, що "керує" – це зв'язок. Однак, можна розглядати сутність "керівника", яка має зв'язку "керує" з сутністю "відділ" і "є" з сутністю "співробітник".
Зв'язок може мати атрибути. Наприклад, для зв'язку ВІДДІЛ-РОБОТНИК можна задати атрибут СТАЖ_РОБОТИ_В_ОТДЕЛЕ.
Роль сутності у зв'язку- функція, яку виконує сутність у зв'язку. Наприклад, у зв'язку БАТЬКІВ-ПОТОМОК сутності ЛЮДИНА можуть мати ролі "батько" і "нащадок".Вказівка ролей у моделі "сутність-зв'язок" не є обов'язковим і служить для уточнення семантики зв'язку.
Набір зв'язків(relationship set) - це відношення між n (причому n не менше 2) сутностями, кожна з яких відноситься до деякого набору сутностей.
Хоча, строго кажучи, поняття "зв'язок" і "набір зв'язків" різні (перша є елементом другого), їх дуже часто змішують. Тому ми, не претендуючи на академічну строгість, надалі також часто користуватимемося термінами "зв'язок" маючи на увазі "набір зв'язків" і "сутність" маючи на увазі "набір сутностей".
Що стосується n=2, тобто. коли зв'язок поєднує дві сутності, вона називається бінарною. Доведено, що n-арний набір зв'язків (n>2) завжди можна замінити безліччю бінарних, проте перші краще відображають семантику предметної області.
Те число сутностей, яке може бути асоційовано через набір зв'язків з іншою сутністю, називаютьступенем зв'язку. Розгляд ступенів особливо корисний для бінарних зв'язків. Можуть існувати такі ступені бінарних зв'язків:
Один до одного (1: 1)
Це означає, що в такому зв'язку сутність з однією роллю завжди відповідає не більше однієї сутності з іншою роллю. У розглянутому нами прикладі це зв'язок " керує " , оскільки у кожному відділі може лише один начальник, а співробітник може керувати лише одному відділі. Даний факт представлений на малюнку, де прямокутники позначають сутності, а ромб - зв'язок. Оскільки ступінь зв'язку кожної сутності дорівнює 1, всі вони з'єднуються однією лінією.
Іншою важливою характеристикою зв'язку крім її ступеня єклас приналежностіі сутностей, що входять до неї, абокардинальністьзв'язку. Так як у кожному відділі обов'язково повиненбути керівником, то кожній сутності "ВІДДІЛ" неодмінно повинна відповідати сутність "СПІВРОБІТНИК". Однак, не кожен співробітник є керівником відділу, отже у зв'язку з цим не кожна сутність "СПІВРОБІТНИК" має асоційовану з нею сутність "ВІДДІЛ". Таким чином, кажуть, що сутність "СПІВРОБІТНИК" має обов'язковий клас приналежності (цей факт позначається також зазначенням інтервалу числа можливих входжень сутності у зв'язок, в даному випадку це 1,1), а сутність "ВІДДІЛ" має необов'язковий клас приналежності (0,1 ). Тепер цей зв'язок ми можемо описати як 0,1:1,1. Надалі кардинальність бінарних зв'язків ступеня 1 будемо позначати наступним чином:
Один до багатьох (1: n)
У разі сутності з однією роллю може відповідати будь-яке число сутностей з іншого роллю. Такий зв'язок ВІДДІЛ-СПІВРОБІТНИК. У кожному відділі може працювати довільна кількість співробітників, але працівник може працювати лише в одному відділі. Графічно ступінь зв'язку n відображається "древоподібною" лінією, так це зроблено на наступному малюнку.

Цей малюнок додатково ілюструє той факт, що між двома сутностями може бути визначено кілька наборів зв'язків. Тут також необхідно враховувати клас власності сутностей. Кожен співробітник повинен працювати у якомусь відділі, але не кожен відділ (наприклад, знову сформований) повинен включати хоча б одного співробітника. Тому сутність "ВІДДІЛ" має обов'язковий, а сутність "СПІВРОБІТНИК" необов'язковий класи власності. Кардинальність бінарних зв'язків ступеня n позначатимемо так:
Багато до одного (n: 1)
Цей зв'язок аналогічний до відображення 1 : n. Припустимо, що аналізоване нами підприємство будує свою діяльність на підставі контрактів, що укладаються ззамовниками. Цей факт відображається в моделі "сутність-зв'язок" за допомогою зв'язку КОНТРАКТ-ЗАМОВНИК, що поєднує сутності КОНТРАКТ(НОМЕР, ТЕРМІН_ВИКОНАННЯ, СУМА) та ЗАМОВНИК(Найменування, АДРЕСА). Так як з одним замовником може бути укладено більше одного контракту, то зв'язок КОНТРАКТ-ЗАМОВНИК між цими сутностями матиме ступінь n : 1.
В даному випадку, з цілком очевидних міркувань (кожен контракт укладено з конкретним замовником, а кожен замовник має хоча б один контракт, інакше він не був би таким), кожна сутність має обов'язковий клас власності.
Багато хто до багатьох (n:n)
У цьому випадку, кожна з асоційованих сутностей може бути представлена будь-якою кількістю екземплярів. Нехай на підприємстві для виконання кожного контракту створюється робоча група, до якої входять співробітники різних відділів. Оскільки кожен співробітник може входити в кілька (у тому числі і в одну) робочих груп, а кожна група повинна включати не менше одного співробітника, то зв'язок між сутностями СПІВРОБІТНИК і РОБОЧА_ГРУПА має ступінь n : n.
Якщо існування сутності x залежить від існування сутності y, то x називаєтьсязалежною сутністю(іноді сутність x називають "слабкою", а "сутність" y - сильною). Як приклад розглянемо зв'язок між раніше описаними сутностями РОБОЧА_ГРУПА та КОНТРАКТ. Робоча група створюється лише після того, як буде підписано контракт із замовником, та припиняє своє існування щодо виконання контракту. Таким чином, сутність РОБОЧА_ГРУПА є залежною від сутності КОНТРАКТ. Залежну сутність позначатимемо подвійним прямокутником, а її зв'язок із сильною сутністю лінією зі стрілкою:
Зауважимо, що кардинальність зв'язку для сильної сутності завждибуде (1,1). Клас приналежності та ступінь зв'язку для залежної сутності можуть бути будь-якими. Припустимо, наприклад, що підприємство, яке ми розглядаємо, користується кількома банківськими кредитами, які надаються набором сутностей КРЕДИТ(НОМЕР_ДОГОВОРА,СУМА, ТЕРМІН_ПОГАШЕННЯ, БАНК). По кожному кредиту повинні здійснюватися виплати відсотків та платежі у рахунок його погашення. Цей факт представляється набором сутностей ПЛАТЕЖ(ДАТА, СУМА) та набором зв'язків "здійснюється за". У разі, коли отримання запланованого кредиту скасовується, інформація про нього має бути видалена з бази даних. Відповідно, мають бути видалені і всі відомості про планові платежі за цим кредитом. Таким чином, сутність ПЛАТІЖ залежить від сутності КРЕДИТ. [2]
Інструменти для створення ER-моделей
Існує безліч інструментів для роботи з ER-моделями, ось деякі з них: