Ідентифікуючий зв'язок erwin. Загальні принципи роботи в erwin




Створення сутностей та інформації про них – це лише частина картини. Зв'язками називаються логічні сполуки чи асоціації між двома сутностями. Якщо ви не знайомі з типами зв'язків, які підтримуються в ER

win, зверніться до посібника з методів ERwin Methods Guide.

У цьому розділі Ви дізнаєтесь, як:

Створювати новий зв'язок Переносити зовнішні ключі на залежні сутності Входить до редактора Relationship Входить до редактора Relationship Definition Коригувати розташування "вигину" зв'язку

Існує деякий базовий обсяг інформації, яку ви повинні знати, перш ніж ви почнете малювати зв'язки.

Що таке зв'язокЯк входити в потрібні редактори Які інструменти з toolbox Вам знадобляться

Анатомія зв'язку

Дані, що стосуються зв'язків, дуже важливі і часто є критичними даними, які ми використовуємо у повсякденному бізнесі. Наприклад, важливо знати про якийсь тип інструменту, але знання того, до кого належить конкретний інструмент (зв'язок між людиною та інструментом) може мати критичну важливість. Зв'язок- це співвідношення або між двома сутностями, або між сутністю та цією ж сутністю. Зв'язок – "логічний" об'єкт, представлений одним або декількома атрибутами – зовнішніми ключами. Зв'язок у ER

winзазвичай містить п'ять типів інформації: тип зв'язку, батьківський кінець зв'язку, дочірній кінець зв'язку, знак обов'язковості зв'язку і кардинальність зв'язку.

Як показати на екрані меню Editor

поставляється з рядком меню, де немає меню Editor. Ви завжди можете увійти в меню Display та Editor натисканням правої кнопки миші. Вказуючи стрілкою курсору на діаграму, ви на екрані меню Display, а вказуючи курсором на об'єкт, викликаєте меню, що містить всі редактори, пов'язані з цим об'єктом. Разом з тим, Ви можете показати меню Editor у рядку меню або прибрати його звідти.

1. Дайте команду перемикача "Show Editor Menu" у меню Option, щоб показати меню Editor у рядку меню.

2. Щоб скинути меню Editor з рядка меню, повторіть цю команду.

Підтримка зв'язків у Toolbox

winToolbox є п'ять типів зв'язків: ідентифікуюча, неідентифікуюча, повний кластер підтипів, неповний кластер підтипів, невизначена (зв'язок "багатьом-багатьом"). Ідентифікуючий зв'язок -такий зв'язок, при якому екземпляр дочірньої сутності ідентифікується через свою асоціацію з батьківською сутністю. Атрибути первинного ключа батьківської сутності стають атрибутами первинного ключа дочірньої. Неідентифікуючий зв'язок -це такий зв'язок, при якому екземпляр дочірньої сутності не ідентифікується через свою асоціацію з батьківською сутністю. Атрибути первинного ключа батьківської сутності стають неключовими дочірніми атрибутами. також гл. 9, Зв'язки: можливості підвищеного рівня складності,розд. "Завдання неідентифікуючих зв'язків" та "Створення зв'язків підтипів".

1. Встановіть курсор на інструмент, який Вам потрібен, і натисніть ліву кнопку миші.

ідентифікуючий зв'язок неідентифікуючий зв'язок

2. Натисніть на батьківську, а потім на дочірню сутність для створення зв'язку.

Використання pop-up меню Editor для зв'язків

містить спеціальну скорочену версію меню Editor для зв'язків. Якщо Ви клацнете правою кнопкою миші по зв'язку, що знаходиться у вікні діаграми, то ERwinвиведе на екран скорочений, контекстно-чутливий варіант меню Editor, яке містить лише редактори, орієнтовані зв'язку.
Див. 3, Сутності та атрибути в
ER win , Розд. "Використання редакторів ERwin".

Якщо Ви встановите курсор на лінію зв'язку, натиснете SHIFT і двічі клацніть лівою кнопкою миші, то з'явиться вікно-діалог, в якому ERwin запитає Вас, чи Ви хочете відкрити активний редактор для батьківської або для дочірньої сутності. Оберіть натисканням кнопки миші батьківську або дочірню сутність та натисніть "ОК".

Створення зв'язку

Створити зв'язок у ER

winлегко. У цьому розділі описується, як створити зв'язок та ввести необхідні дані щодо нього.

Як створити зв'язок

1. На Toolbox виберіть інструмент, що відповідає потрібному типу зв'язку (ідентифікуючий зв'язок - проста лінія з однією точкою на кінці, неідентифікуючий зв'язок - пунктирна лінія, у якої може бути (але не обов'язково) ромб на одному кінці та точка на іншому).

2. Намалюйте зв'язок: клацніть спочатку по батьківській, а потім по дочірній сутності.

Коли Ви сформуєте зв'язок, то ключ батьківської сутності автоматично з'явиться як частина ключа дочірньої (для ідентифікуючого зв'язку) або як неключовий атрибут дочірньої сутності (для неідентифікуючого зв'язку), причому поруч з ним стоятиме (FK), тобто зовнішній ключ, Foreign Key. Ця операція зміни дочірньої сутності внаслідок створення зв'язку називається міграцією ключа

.

Оскільки ERwin автоматично здійснює міграцію ключів, Вам не потрібно вводити зовнішні ключі. Якщо Ви це зробите, то отримаєте атрибути і колонки, що повторюються, що призведе до конфліктної ситуації у Вашому проекті.

Робота в редакторі Relationship

Зв'язки, як і сутності, можуть мати імена та мітки. Ці мітки називаються дієслівними фразами, вони повинні описувати, як батьківська сутність пов'язана з дочірньою. Редактор Relationship дозволяє задати дієслівну фразу, кардинальність і відношення до нульових значень для зв'язку.

Ви також можете задати в редакторі Relationship ім'я ролі для атрибута - зовнішнього ключа. також гл. 8, Сутності та атрибути: можливості підвищеного рівня складності,розд. "Використання імен ролей атрибутів".

Як відкрити редактор Relationship

1. Дайте команду "Relationship" у меню Editor.

2. Двічі клацніть по лінії того зв'язку, який Ви бажаєте редагувати. Ви увійдете до редактора Relatio

nship.

Встановіть курсор на лінію зв'язку та клацніть правою кнопкою миші. Ви увійдете до pop-up меню Editor. Дайте у ньому команду "Relationship".

Як користуватись редактором Relationship

1. Введіть ім'я, яке ідентифікує зв'язок, у вікно Verb Phrase.

Зазвичай ім'ям зв'язку є дієслівна фраза (verb phrase). Намагайтеся, щоб імена зв'язків якомога повніше їх описували!Редактор Relationship показує перші чотири рядки дієслівної фрази і дозволяє Вам вводити та переглядати навіть більше рядків.

Для переходу на новий рядок скористайтеся клавішею "Повернення каретки". ER

winзображує дієслівну фразу на діаграмі в той час, коли Ви вводите її в редакторі.

2. Поруч із областю для введення дієслівної фрази знаходиться список "Foreign Keys", який містить усі зовнішні ключі, які виникли в результаті міграції при заданні поточного зв'язку.

3. Якщо тип зв'язку ще не заданий, задайте його натисканням кнопки вибору: "Identifying" або "Non-Identifying".

4. Натисніть потрібні кнопки вибору у вікнах "Cardinality" та "Nulls" для встановлення кардинальності та режиму нульових значень для поточного зв'язку.

5. Якщо Ви хочете зв'язати ім'я ролі із зовнішнім ключем, клацніть атрибут у вікні списку "Foreign Key" і введіть ім'я ролі у текстове вікно "Role Name".

Див. 8, Сутності та атрибути: можливості підвищеного рівня складності, розд. "Використання імен ролей атрибутів".

Як переглядати вікно VERb Phrase

Ви можете використовувати стрілки для прокручування тексту у вікні "Verb Phrase" для того, щоб переглянути весь текст довгої дієслівної фрази.

Завдання кардинальності зв'язку

Кардинальність зв'язку

служить для позначення відношення числа екземплярів батьківської сутності до екземплярів дочірньої. Батьківська сутність може зв'язуватися з дочірньою одним із чотирьох способів. У IDEF1X кардинальність бінарних відносин дорівнює 1: n, де n може набувати значення:0, 1 або більше - позначається "порожнім місцем"
Кожна батьківська сутність пов'язана з 0, 1 або більше дочірніх екземплярів.
1 або більше - позначається літерою "Р"
Кожна батьківська сутність пов'язана з 1 або більше дочірніх екземплярів.
0 або 1 - позначається буквою "Z"
Кожна батьківська сутність пов'язана з 0 або 1 екземпляром дочірньої.
рівно n, де "n" - деяке число
Кожна батьківська сутність пов'язана з рівно n екземплярами дочірньої.

Редактор Relationship також дозволяє задавати кардинальність зв'язку.

1. Перебуваючи в редакторі Relationship, натисніть кнопку вибору, яка означає потрібну Вам кардинальність.

2. Якщо Ви натиснули кнопку "Exactly", необхідно ввести число.

Якщо Ви задали цей режим і не ввели число, то ER

winне дасть Вам вийти з вікна діалогу.

Як показати кардинальність зв'язку

дозволяє показати кардинальність зв'язку на діаграмі.

Як показати чи прибрати кардинальність зв'язку

1. Дайте команду "Cardinality" у меню Display.

2. Для того, щоб усунути інформацію про кардинальність, повторіть цю команду.

також гл. 11, Документування правил (Business Rules),розд. "Використання кардинальності зв'язку висловлювання правил".

Завдання Null (нульових значень)

У редакторі Relationship можна також встановити режим "нульових значень". Він відноситься до випадку, коли значення немає: це порожня множина або немає колонки. Атрибут, який може набувати нульового значення, вважається "необов'язковим" і на діаграмі зображується як ромб на батьківському кінці зв'язку. Ви можете встановити цей режим і в інших місцях, але взагалі кажучи, перша така можливість надається саме в цьому редакторі.

Як задати "обов'язкову" або
"необов'язковий" зв'язок

1. Перебуваючи в редакторі Relationship, натисніть кнопку "No Nulls" для завдання "обов'язкового" зв'язку (ромбік на батьківському кінці відсутня) або натисніть кнопку "Nulls Allowed" для завдання "необов'язкового" зв'язку (з ромбиком на батьківському кінці).

Робота в редакторі Relationship Definition

Ви також можете захотіти дати більш повне визначення Вашого зв'язку для того, щоб надалі мати можливість на нього посилатися. Це робиться у редакторі Relanship Definition.

1. Дайте команду "Relationship Definition" у меню Editor, якщо Ви її ще не давали.

2. Двічі клацніть на той зв'язок, який Ви хочете відредагувати.

Встановіть курсор на той зв'язок, який Ви бажаєте відредагувати, та натисніть праву кнопку миші. Дайте команду "Relationship Definition" у меню Editor.

Якщо при спробі двічі клацнути зв'язок Ви отримали повідомлення "Select an Object First", це означає, що Ви клацнули не точно по лінії зв'язку. Натисніть кнопку "ОК" у вікні повідомлення, щоб прибрати його з екрана, і спробуйте знову. Намагайтеся клацнути точно по лінії.

Як користуватись редактором Relationship Definition

1. Ім'я зв'язку, якщо воно є, знаходиться у вікні Verb Phrase. Якщо бажаєте, можете його відредагувати.

2. Відредагуйте, як слід, фізичне ім'я зв'язку "Relationship Physical Name".

3. Введіть визначення у вікно "Rel

ationship Definition".

4. Після того, як Ви закінчите роботу, натисніть кнопку "ОК", щоб зберегти інформацію та вийти з редактора. Щоб вийти з редактора без збереження змін, натисніть кнопку Cancel.

Корекція зв'язків

Якщо Вам не подобається форма лінії зв'язку, її можна змінити. Для цього Вам потрібно захоплювати мишею кути лінії зв'язку та переносити їх з місця на місце, доки лінія не почне виглядати краще.

Як відкоригувати зв'язок

1. Натисніть на той зв'язок, який Ви хочете відредагувати. На екрані з'явиться важіль зв'язку (темний квадрат). Він визначає місце лінії зв'язку, яке можна переносити.

2. Клацніть на будь-якому місці того сегмента лінії зв'язку, де зображено важіль.

3. Не відпускаючи ліву кнопку миші, змініть розташування лінії зв'язку відповідно до Вашого смаку і потім відпустіть кнопку миші.

Ніколи не забувайте регулярно зберігати зміни, які ви вносите в діаграму.

Коротке повторення розділу 4

Як показати або прибрати меню

Дайте команду "Show Editor Menu" у меню Option, щоб показати меню Editor у рядку меню. Щоб прибрати меню Editor з рядка меню, повторіть цю команду.

Як користуватися інструментами, орієнтованими на зв'язок

Встановіть курсор на потрібний інструмент і клацніть лівою кнопкою миші.

Як створити новий зв'язок

Клацніть по одній із піктограм на Toolbox, що позначають зв'язок, а потім клацніть спочатку по батьківській сутності, потім по дочірній.

Як зробити міграцію зовнішніх ключів у залежні сутності

Нічого не робіть. ERwin автоматично здійснює міграцію зовнішніх ключів при створенні зв'язку. Ніколи не вводьте ключі самостійно.

Як увійти до редактора Relationship

Переконайтеся, що режим Relationship активний у меню Editor, а потім двічі клацніть по тому зв'язку, який Ви бажаєте відредагувати.

Як задати кардинальність зв'язку

Перебуваючи в редакторі Relationship, натисніть одну з кнопок вибору у вікні Cardinality для того, щоб задати кардинальність зв'язку. Якщо Ви натиснули кнопку "Exactly", необхідно ввести точне значення кардинальності в текстове вікно, розташоване поруч із назвою кнопки.

Як увійти до редактора Relationship Definition

Переконайтеся, що режим "Relationship Definition" активний у меню Editor, а потім двічі клацніть по тому зв'язку, який Ви бажаєте відредагувати.

Як відкоригувати форму лінії зв'язку

Клацніть по одному з кутів на лінії і рухайте його, доки лінія не стане красивішою.

6. Моделювання в ERwin

Місце ERwin в інформаційному моделюванні
Процес побудови інформаційної моделіскладається з наступних кроків:

  • визначення сутностей;
  • визначення залежностей між сутностями;
  • завдання первинних та альтернативних ключів;
  • визначення атрибутів сутностей;
  • приведення моделі до необхідного рівня нормальної форми;
  • перехід до фізичного опису моделі: призначення відповідностей: ім'я сутності - ім'я таблиці, атрибут сутності - атрибут таблиці; завдання тригерів, процедур та обмежень;
  • створення бази даних.

ERwin створює візуальне уявлення (модель даних) для розв'язуваного завдання. Це подання може використовуватися для детального аналізу, уточнення та розповсюдження як частини документації, яка потрібна в циклі розробки. Однак ERwin не тільки інструмент для малювання. ERwin автоматично створює базу даних (таблиці, індекси, процедури, що зберігаються, тригери для забезпечення посилальної цілісності та інші об'єкти, необхідні для управління даними).

Відображення логічного та фізичного рівня моделі даних у ERwin

У ERwin існують два рівні представлення та моделювання – логічний та фізичний. Логічний рівень означає пряме відображення фактів із реального життя. Наприклад, люди, столи, відділи, собаки та комп'ютери є реальними об'єктами. Вони називаються природною мовою, з будь-якими роздільниками слів (прогалини, коми і т.д.). На логічному рівні не розглядається використання конкретної СУБД, не визначаються типи даних (наприклад, ціле чи речове число) та не визначаються індекси для таблиць.
Цільова СУБД, імена об'єктів та типи даних, індекси становлять другий (фізичний) рівень моделі ERwin.
ERwin надає можливості створювати та керувати цими двома різними рівнями представлення однієї діаграми (моделі), так само як і мати багато варіантів відображення на кожному рівні.

Компоненти діаграми ERwin та основні види уявлень діаграми

Діаграма ERwin будується з трьох основних блоків – сутностей, атрибутів та зв'язків. Якщо розглядати діаграму як графічне уявлення правил предметної області, то сутності є іменниками, а зв'язки – дієсловами.
Вибір між логічним та фізичним рівнем відображення здійснюється через лінійку інструментів чи меню. Всередині кожного з цих рівнів є такі режими відображення:

  • Режим "сутності" – усередині прямокутників відображається ім'я сутності (для логічної моделі) або ім'я таблиці (для фізичного подання моделі); служить для зручності огляду великої діаграми чи розміщення прямокутників сутностей діаграмі.
  • Режим визначення сутності служить для презентації діаграми іншим людям.
  • Режим "атрибути". При переході від предметної області до моделі потрібно вводити інформацію, що становить сутність. Ця інформація вводиться шляхом завдання атрибутів (на фізичному рівні- Стовпчиків таблиць). У цьому режимі прямокутник-сутність ділиться лінією на дві частини - у верхній частині відображаються атрибути (колонки), що становлять первинний ключ, а в нижній - інші атрибути. Цей режим є основним під час проектування на логічному та фізичному рівнях.
  • Режим "первинні ключі" - усередині прямокутників - сутностей показуються лише атрибути/колонки, що становлять первинний ключ.
  • Режим "піктограми". Для презентаційних цілей кожної таблиці може бути поставлена ​​у відповідність піктограма (bitmap).
  • Режим "показ дієслівної фрази". На дугах зв'язків з'являються дієслівні фрази, що пов'язують сутності (для логічного рівня) або імена зовнішніх ключів (для фізичного рівня).

Діаграма може займати більш ніж один екран і більше одного листа під час друку. Для огляду моделі передбачені, крім прокручування екрана, режими зменшення/збільшення зображення, відображення всієї моделі, відображення виділеної частини моделі.

Інструменти для створення моделі в ERwin

Основні інструменти створення моделі доступні як у меню, так і через вікно інструментів. З їх допомогою створюються незалежні та залежні сутності, що ідентифікують та неідентифікують зв'язки, повні та неповні категорії, неспецифічні зв'язки та текстові елементи.
Натисканням миші над сутністю здійснюється вхід до одного з численних редакторів ERwin:

  • редактори, пов'язані з сутністю в цілому (визначення сутності, додаткова інформація, тригери, індекси, характеристики таблиці, процедури, що зберігаються, пов'язані з таблицею);
  • редактори атрибутів (визначення атрибутів, колонки таблиці у фізичному поданні моделі, репозитарій засобу 4GL, наприклад, розширені атрибути PowerBuilder).

Ідентифікація сутностей. Сутності у ERwin

На діаграмі сутність зображується прямокутником. Залежно від режиму представлення діаграми, прямокутник може містити ім'я сутності, її опис, список її атрибутів та інші відомості.
Горизонтальна лінія прямокутника поділяє атрибути сутності на два набори - атрибути, що становлять первинний ключ у верхній частині та інші (що не входять до первинних ключів) у нижній частині.
Сутність є безліч реальних або абстрактних об'єктів, наприклад, люди, місця, події, факти, які мають загальні характеристики. Сутність – це логічне поняття. Сутності відповідає таблиця у реальній СУБД. У ERwin суть візуально представляє три основні види інформації:

  • атрибути, що становлять первинний ключ;
  • неключові атрибути;
  • тип сутності (незалежна/залежна).

Первинний ключ - це атрибут або набір атрибутів, що унікально ідентифікує екземпляр сутності. Якщо кілька наборів атрибутів можуть унікально ідентифікувати сутність, вибір одного з них здійснюється розробником на підставі аналізу предметної області.
До кожного первинного ключа ERwin створює при генерації структури БД унікальний індекс.
Примірники незалежної сутності можуть бути унікально ідентифіковані без визначення зв'язків з іншими сутностями; залежна сутність, навпаки, може бути унікально ідентифікована без визначення її зв'язків з іншими сутностями. Залежна сутність відображається в ERwin прямокутником з закругленими кутами.

Зв'язки (relationships) у ERwin

Зв'язок - це функціональна залежність між двома сутностями (зокрема, можливий зв'язок сутності із самою собою). Наприклад, важливо знати прізвище співробітника і не менш важливо знати, в якому відділі він працює. Таким чином, між сутностями "відділ" та "співробітник" існує зв'язок "складається з" (відділ складається зі співробітників). Зв'язок - це поняття логічного рівня, якому відповідає зовнішній ключ фізично. У ERwin зв'язку представлені п'ятьма основними елементами інформації:

  • тип зв'язку (ідентифікуючий, неідентифікуючий, повна/неповна категорія, неспецифічний зв'язок);
  • батьківська сутність;
  • дочірня (залежна) сутність;
  • потужність зв'язку (cardinality);
  • допустимість порожніх (null) значень.

Зв'язок називається ідентифікуючим, якщо екземпляр дочірньої сутності ідентифікується через його зв'язок із батьківською сутністю. Атрибути, що становлять первинний ключ батьківської сутності, при цьому входять до первинного ключа дочірньої сутності. Дочірня сутність за ідентифікуючого зв'язку завжди є залежною.
Зв'язок називається неідентифікуючим, якщо екземпляр дочірньої сутності ідентифікується інакше, ніж через зв'язок із батьківською сутністю. Атрибути, що є первинним ключем батьківської сутності, при цьому входять до складу неключових атрибутів дочірньої сутності.
Для визначення зв'язків ERwin вибирається тип зв'язку, потім мишею вказується батьківська та дочірня сутність. Ідентифікуючий зв'язок зображується суцільною лінією; неідентифікуюча – пунктирною лінією. Лінії закінчуються точкою із боку дочірньої сутності.
При визначенні зв'язку відбувається міграція атрибутів первинного ключа батьківської сутності відповідну область атрибутів дочірньої сутності. Тому такі атрибути не запроваджуються вручну.
Атрибути первинного ключа батьківської сутності за умовчанням мігрують зі своїми іменами. ERwin дозволяє запровадити їм ролі, тобто. нові імена, під якими мігруючі атрибути будуть представлені у дочірній сутності. У разі неодноразової міграції атрибуту таке перейменування необхідне. Наприклад, сутність "посередницька угода" має атрибут "код підприємства-продавця" та "код підприємства-покупця". У разі первинний ключ сутності " підприємство " ( " код підприємства " ) має дві ролі у дочірній сутності.
Фізично ім'я ролі - це ім'я колонки зовнішнього ключа в дочірній таблиці.
Потужність зв'язку є відношенням кількості екземплярів батьківської сутності до відповідної кількості екземплярів дочірньої сутності. Для будь-якого зв'язку, крім неспецифічного, цей зв'язок записується як 1:n.
ERwin відповідно до методології IDEF1X надає 4 варіанти для n, які зображуються додатковим символом у дочірньої сутності: нуль, один або більше (за замовчуванням); нуль чи один; рівно N, де N – конкретне число.
Допустимість порожніх (NULL) значень у неідентифікуючих зв'язків ERwin зображує порожнім ромбиком на дузі зв'язку з боку батьківської сутності.
Позначення потужності відповідно нуль, один або більше, один або більше, нуль або один в нотації IE наведено на рис. 1.

Рис.1. Позначення потужності зв'язку в нотації IE

Ім'я зв'язку на логічному рівні є "дієсловом", що зв'язує сутності. Фізичне ім'я зв'язку (яке може відрізнятись від логічного) для ERwin означає ім'я обмеження (constraint) або індексу.

Графічне редагування моделі

Для встановлення зв'язків між сутностями та створення зовнішніх ключів ERWin надає можливість поділу типів зв'язків на кілька варіантів:

  • ідентифікуючий зв'язок - зв'язок, що визначає однозначну відповідність екземпляра однієї сутності єдиному екземпляру пов'язаної сутності і, як правило, описує зв'язок 1:1, але при реалізації зчепленого первинного ключа може реалізовувати зв'язок один - до багатьох (1:JV);
  • неідентифікуючий зв'язок - зв'язок, що реалізує тип зв'язку один - до багатьох (1 :N),представляючи зовнішній ключ у зв'язаної сутності як простий атрибут, на який можуть бути накладені певні додаткові обмеження в порівнянні зі звичайними інформаційними атрибутами;
  • множинний зв'язок - зв'язок, що реалізує тип зв'язку багато хто - до багатьох (Л Г:М), представляється тільки на рівні логічної моделі, ілюструючи з'єднання між сутностями, але не створюючи зовнішніх ключів у зв'язаних сутностей;
  • категоризаційний - зв'язок, що забезпечує зв'язування сутності-спільності з сутностями-категоріями типом зв'язку один - до - одного (1:1) і одночасно створює зовнішній первинний ключ у сутності-категоріях, пов'язаний з первинним ключем сутності-спільності.

При створенні зв'язку між двома сутностями досить вибрати піктограму типу зв'язку, після чого послідовно вказати батьківську і пов'язану сутності. В результаті буде створено зв'язок і якщо це передбачено типом зв'язку, будуть створені необхідні зовнішні ключі у зв'язаній сутності. У випадку, коли розробник не визначив первинний ключ батьківської сутності та встановив зв'язок, наприклад, не ідентифікуючий, то створення зовнішнього ключа не відбудеться, але, як тільки буде вказано первинний ключ батьківської сутності, він відразу ж позначиться у зв'язаній сутності зовнішнім ключем відповідно з наявною у моделі зв'язку між цими сутностями.

Інструментальний засіб ERWin, при встановленні зв'язків між сутностями, визначає два види сутностей:

  • батьківська (Parent) – є базовою сутністю, первинний ключ якої може мігрувати у пов'язану сутність;
  • дочірня (Child) - визначається сутністю, яка при встановленні зв'язку отримує зовнішній ключ, що формується з первинного ключа, що мігрує, батьківської сутності.

Такий поділ виглядає цілком логічним, оскільки, виходячи з особливостей вибудовування зв'язків та логіки предметної області, відомості, що описуються батьківською сутністю, є агрегуючими щодо даних, що описуються дочірньою сутністю. Наприклад, розглядаючи зв'язок між сутностями "Клієнт" та "Замовлення", конкретний клієнт, що надається екземпляром сутності "Клієнт", об'єднує (агрегує) безліч замовлень, які він створив в електронному мага-

зини. В результаті, сутність "Замовлення" по відношенню до сутності "Клієнт" можна розглядати як дочірню, а сутність "Клієнт" - батьківську.

Опис зв'язків містить, порівняно з сутностями та атрибутами, меншу кількість властивостей, які необхідно описувати, але вони також, а іноді й більше, важливі, оскільки дозволяють описати та налаштувати правила цілісності посилання, забезпечуючи, при реалізації в базі даних, коректність збереження даних . Однією з характеристик є найменування зв'язку, що використовується в моделі бази даних і що визначає основний зміст зв'язку між сутностями, що встановлюється (рис. 3.15).

Рис. 3.15.Базовий опис зв'язку в ERWin


Колонка "Name" в описі зв'язку надає розробнику можливість вказати найменування, що відображає значеннєве навантаження зв'язку. Це важлива складова моделі, що дозволяє однозначно розуміти суть і сенс встановленого зв'язку, що в результаті має допомогти провести коректну нормалізацію моделі бази даних, правильним чином перерозподіливши окремі атрибути між сутностями.

Важливо розуміти, що найменування зв'язків мають бути, по можливості, унікальними в рамках усієї моделі бази даних, а не лише на рівні окремої діаграми. Наявність однакових найменувань зв'язків може призвести до неможливості правильно ідентифікувати відповідний зв'язок і побудувати ефективну модель. Інші характеристики, що описують зв'язок між сутностями, в діалоговому вікні розміщені нижче списку зв'язків моделі і містять правила кардинальності (потужності), перейменування зовнішнього ключа (роль), що формується, і забезпечення цілісності посилання.

Три найважливіші базові характеристики зв'язку (рис. 3.16), що формують основну суть зв'язку, описуються в першій закладці "General" і є типом зв'язку, найменуванням зв'язку, кардинальністю (потужністю). Ці параметри зв'язку завжди обов'язково мають бути визначені та правильним чином описані. Крім найменування зв'язку, інші показники будуть перенесені за відповідної трансформації у фізичну модель, та був і у базу даних.

Перша характеристика зв'язку визначає її тип (рис. 3.17): ідентифікуюча або ідентифікуюча. При цьому, вибираючи відповідний тип зв'язку, розробник має можливість (для не ідентифікуючого зв'язку) уточнювати відсутність екземпляра батьківської сутності, дозволяючи тим самим для зовнішнього ключа вказувати порожнє значення "NULL".

Рис. 3.16.Основні характеристики зв'язку в РЖ Win


Зазвичай, при встановленні зв'язку, що не ідентифікує, параметр "Null Option" встановлюється в значення "Nulls Not Allowed" (NULL неприпустимий). Це визначається особливостями роботи з даними, відповідно до яких дочірній екземпляр даних має бути пов'язаний з батьківським екземпляром. Але іноді трапляються випадки, коли це не дотримується. Як правило, така ситуація виникає, коли об'єкти предметної області, що об'єднуються цим зв'язком, є рівнозначними і неможливо однозначно визначити першочерговість появи екземпляра тієї чи іншої сутності. Тоді встановлюється значення "Null Allowed" (NULL допускається), як показано у прикладі (див. рис. 3.17).


Оскільки зв'язку один - до - одному і один - до - багатьом є спорідненими і відмінності в них полягають тільки в потужності та деяких жорсткіших вимогах, то перемикання між цими типами зв'язків можна здійснювати в рамках діалогового вікна налаштування зв'язку, перекладаючи зв'язок з типу "Не ідентифікуюча" у тип "Ідентифікуюча". У цьому випадку параметр "Null Option" буде недоступним

для налаштування. Пояснюється це тим, що з встановлення ідентифікуючого зв'язку отримуваний у дочірній сутності зовнішній ключ одночасно є первинним ключем, а правилами побудови бази даних первинний ключ неспроможна зберігати порожнього значення. Тому для отриманого зовнішнього ключа встановлюється параметр Null Not Allowed (NULL неприпустимий).

Іншою характеристикою, яка дає можливість переходити від зв'язку один до одного до зв'язку один до багатьох і навпаки, є кардинальність. Встановлення кардинальності (потужності) зв'язку в рамках властивостей "Cardinality" та "Cardinality Value" визначає правила наповнення екземплярами дочірньої сутності (рис. 3.18). Передбачаються чотири варіанти кардинальності, що визначаються засобом ERWin:

  • Zero, One or More (нуль, один або багато) - для дочірньої сутності можлива будь-яка кількість екземплярів, пов'язаних з одним екземпляром батьківської сутності, включаючи варіант відсутності екземплярів;
  • (Р) One or More (один або багато) - кількість екземплярів дочірньої сутності, пов'язаних з одним екземпляром батьківської сутності, може бути будь-яким, але при створенні екземпляра в батьківській сутності в дочірній сутності екземпляри вже повинні існувати, що вимагає встановлення параметра "Null Option " значення "Nulls Allowed", дозволяючи зберігання порожнього значення "NULL" у зовнішньому ключі, отриманому під час встановлення зв'язку;
  • (Z) Zero or One (нуль чи один) - визначається зв'язок один - до - одного, дозволяючи існування не більше одного екземпляра даних у дочірній сутності;
  • Cardinality Value (значення кардинальності) - вказує точну кількість пов'язаних екземплярів у дочірній сутності, що може бути реалізовано тільки при варіанті параметра "Null Option" у значенні "Nulls Allowed", первинному створенні екземплярів у дочірній сутності та подальшим їх ув'язуванням з екземпляром .

Внаслідок вказівки кардинальності (потужності) зв'язку на моделі у діаграмі буде відображено її буквено-цифрове позначення. Якщо вибирається варіант кардинальності (потужності) у варіанті "Один чи багато", то буде відображена літера "Р", у разі кардинальності "Нуль або один" - літера "Z", у разі вказівки точного числового значення - вказане значення, в інших варіантах не відображатиметься жодних позначень на моделі.

Ще одна характеристика зв'язку описується як основна - смислове наповнення зв'язку (рис. 3.19), що позначається дієслівною формою.

Даний опис, як і у всіх моделях бази даних на будь-якому рівні представлення, показує особливість взаємодії екземплярів сутностей відповідно до особливостей предметної області. Як опис має бути фраза, що позначає відношення екземпляра батьківської сутності до екземпляра дочірньої сутності або навпаки, що представляє вираз, що містить дієслово дії.


При встановленні зв'язків один до одного і один до багатьох, як розглядалося вище, первинний ключ батьківської сутності мігрує в дочірню сутність, створюючи відповідний зовнішній ключ (рис. 3.20). Найчастіше, особливо при використанні угоди найменувань елементів моделей, у різних сутностях ідентичні первинні ключі можуть мати однакові найменування, що викликає деякі складнощі при встановленні зв'язків, виражаючи необхідність відображення зовнішніх ключів з найменуваннями, які вже присутні по суті. Іншим варіантом, коли необхідно скористатися механізмом іменування правила міграції ключа, може бути необхідність більш точного формулювання атрибута, що описує відповідний зовнішній ключ.


Вирішення цих завдань реалізується через механізм " Role Name " , де розробник вказує ім'я атрибута для зовнішнього ключа, як має бути представлено моделі бази даних, і, у результаті трансформації, у базі даних. Область "Role Name Info" містить дві колонки:

  • Migrated Attribute (мігруючий атрибут) - показує атрибут батьківської сутності, який є зовнішнім ключем у пов'язаній дочірній сутності (зміни не підлягає);
  • Role Name (ім'я ролі) - позначає нове значення назви атрибута зовнішнього ключа, яке має використовуватись замість імені атрибута, що мігрує.

Вказівка ​​потрібної назви атрибута в колонці "Role Name" призведе до перейменування атрибута зовнішнього ключа та подальшого використання нового імені атрибута у всіх елементах моделі бази даних, де це буде необхідно.

Визначення правил цілісності посилань (рис. 3.21) є етапом фізичного моделювання бази даних. Пов'язано це з тим, що окремі правила деяких СУБД можуть бути недоступні. Тим не менш, ERWin на етапі логічного моделювання надає можливість вказати правила цілісності посилання для формованих зв'язків. На цьому етапі розробнику пропонується максимальний набір правил:

  • None (відсутня) - правило, що передбачає будь-які дії користувача без впливу інші елементи бази даних;
  • No Action (без дії) - правило, що передбачає певні розробником дії;
  • Restrict (заборонити) правило, яке забороняє виконання операції над даними, якщо перевірна умова виконується;
  • Cascade (каскадно) - правило, що виконує послідовні дії над пов'язаними даними відповідно до дії, що виконується над даними, до яких визначено це правило;
  • Set Null (встановити NULL) - правило, що встановлює значення NULL зовнішньому ключі для пов'язаних екземплярів;
  • Set Default (встановити замовчування) - правило, що встановлює значення за промовчанням, визначене зовнішнього ключа пов'язаного екземпляра.

Правила цілісності посилань спрямовані на забезпечення коректності операцій з даними при їх модифікації. Таким чином, ці правила повинні виконуватися, якщо в базі даних реалізуються операції, але додавання, зміни та видалення даних. ERWin реалізує операції обмежень цілісності посилання в максимальному варіанті, розглядаючи виконання відповідних операцій не тільки за основними варіантами, що впливають на зміни в базі даних, але і по операціях, які не повинні істотно змінювати базу даних. У результаті розробнику пропонується вказати правила цілісності посилань при виконанні дій над даними при модифікації даних екземплярів як у батьківській, так і в дочірній сутності. Згодом всі ці дії, якщо вони не передбачені в СУБД, будуть перетворені на програмні модулі автоматичного виконання (тригери) та асоціюються з діями, що виконуються над даними. У разі наявності в СУБД зазначених дій цілісності посилання вони будуть заявлені відповідними правилами при описі таблиць даних.


При формуванні зв'язку багато - до - багатьом розробнику надає можливість вказівки мінімального набору характеристик зв'язку, що включають визначення смислового навантаження. Ніякі інші правила та характеристики для даного типу зв'язку не встановлюються, оскільки при переході до фізичної моделі такий зв'язок повинен бути нормалізований і представлений зв'язками один - до багатьох (рис. 3.22).


  • при першій вказівці зв'язку вибрати піктограму зв'язку та послідовно вибрати сутність-спільність та одну з сутностей-категорій;
  • решту сутності-категорії за допомогою тієї ж піктограми зв'язку категоризації з'єднувати шляхом послідовного вибору графічного елемента та чергової сутності-категорії.

В результаті виконання цих дій у моделі бази даних буде подання зв'язку аналогічно до зазначеного вище прикладу (див. рис. 3.22).

Зв'язок категоризації буває двох типів, один із яких необхідно визначити при встановленні цього зв'язку (рис. 3.23). Для позначення відмінностей у типі зв'язку категоризації позначення графічного елемента представлятиметься з двома рисами або однією рисою (табл. 3.1).




Для самого зв'язку категоризації ніякі інші характеристики не визначаються, і розробнику надається можливість перегляду структури зв'язку категоризації (рис. 3.24). Цей опис дозволяє побачити, які сутності-категорії визначені підтипами (subtypes), а яка сутність-спільність представлена ​​надтипом (supertype).

Самі зв'язки від графічного елемента категоризації до сутностей є зв'язками один до одного, і для них визначені, як правило, фіксовані характеристики. Розробнику надається можливість вказати лише смислове наповнення зв'язків, ім'я атрибута зовнішнього ключа та правила цілісності посилання.

Рис. 3.24.Опис зв'язку категоризації в ЄІЛП

  • Детальний розгляд правил цілісності посилань розглядається в параграфі 3.2.

Нам знадобиться поняття аномалії – невідповідності між обмеженнями цілісності концептуальної та логічної (а також фізичної) схем даних. Мета нормалізації - це якраз усунення аномалій, що виявляються при включенні, оновленні та видаленні даних.

Чотири перші нормальні форми (точніше перша, друга, третя та Бойса-Кодда) об'єднуються в одну групу тому, що їх визначення засновані на класичному понятті функції, заданої на схемі відношення, та на теоремі Хіса.

Ще дві нормальні форми (четверта та п'ята) використовують модифіковані функціональні залежності. Остання нормальна форма- Домен-ключ - знаменує повернення до витоків - логічного підходу до реляційної теорії.

Буде рекомендований практичний спосіб отримання схеми бази у перших чотирьох нормальних формах, що майже завжди дає остаточний варіант схеми. Правильність цієї побудови необхідно перевіряти формальними методами, тобто потрібні й евристичні прийоми та теорія нормалізації.

Обговоримо спочатку прийнятий спосіб викладу матеріалу з нормалізації. Ми, природно, виходитимемо з теорії нормалізації, розвиненої у межах реляційної моделі даних. Однак досвід показав, що при такому викладі початківці важко засвоюють найважливіше поняття аномалії, що визначається як деяка характеристика "неправильності" відображення концептуальної моделі бізнесу в модель бази даних. Тому

ми скористаємося вже відомим вам відображенням реляційної моделі в модель "сутність-зв'язок" і в ER-моделі вивчатимемо нормалізацію. Це дозволить залучити семантику, необхідну роботи з аномаліями.

Давайте ще раз згадаємо про зв'язки між відносинами, про поєднання відносин та зовнішні ключі.

5.1 Зв'язки та зовнішні ключі

У попередніх розділах вивчалися поняття поєднання сутностей та зв'язків між ними. Будемо чітко розрізняти їх. Поняття зв'язку за своєю природою не алгебраїчне, оскільки зв'язки активні. У реалізаціях зв'язку задають структуру бази, працюють при маніпуляціях даними та змінах схеми. З'єднання - алгебраїчне поняття. Сенс даних, отриманих під час виконання з'єднання, повністю сумління розробника. Сенс зв'язку жорстко задається бізнесом, що моделюється.

Семантика зв'язків досить розвинена. Крім потужності кінців, використовуються такі властивості, як обов'язковість, властивість ідентифікованості. У реляційній моделі висловити їх безпосередньо не можна (немає таких слів). Тому перші нормальні форми розглядатимемо в рамках моделі "сутність-зв'язок".

Зв'язки між відносинами/сутностями та в реляційній моделі та в ER-діаграмах утворюються посилальним обмеженням цілісності, яке називається "зовнішній ключ" ("Foreign Key" - скорочено FK).

Щоб не створювати хибного уявлення про бідність реляційної моделі як неможливості реалізації чогось, пригадаємо, що в ній зв'язок п: т представляється через два зв'язки 1: n, що складні зв'язки можна моделювати у різний спосіб. Навіть агрегати можна якось уявити, вводячи сутності, що описують їхній склад. Такі моделі можуть ефективно реалізуватись у програмі, але, швидше за все, вони будуть незручними для людини. Можливості моделювання структур даних у рамках реляційної моделі досить широкі, але, звичайно, не безмежні.

Обговоримо загальний підхід до аналізу структур, які будуть розбиратися надалі на прикладі двох пов'язаних сутностей "Співробітник" та "Відділ", проілюстрованому на малюнку 5.1. Зліва варіант з ідентифікуючим зв'язком, справа з неідентифікуючим.


Рис. 5.1.Приклад зв'язків "один-багатьом"

Хочу ще раз нагадати про те, що ми домовилися розглядати такими, як вони описані в тексті, а не так, як буває або може бути в житті. Це обмеження необхідне, щоб інформація сприймалася всіма та завжди однаково.

В обох випадках схеми кожен співробітник зараховується до одного з відділів. Маємо зв'язок ("багатьом" на стороні відносини "Співробітник"). Щодо "Співробітника" не можна вибрати номер відділу deptno, що не існує у списку відділів (сутність "Відділ"). В одному відділі може бути жодного, одного, двох і більше співробітників.

Ми наголосили на схожому прикладі (розділ 2.2.7), що утворюється парадоксальна ситуація. Директор зарахований до якогось відділу, а начальник цього відділу і підпорядкований директору і водночас буде його начальником. Але можливо відділи - це центри витрат, і зарплату директора вирішили відносити на витрати одного з відділів. В наших навчальних прикладахне варто займатися такими деталями, якщо, звичайно, не обумовлено неприємне. Ви повинні з самого початку звикати, серед іншого, думати про сторону бізнесу, але при вирішенні навчальних завдань не слід розширювати завдання до аналізу можливих варіантів.

У чому різниця між схемами на малюнку 5.1? Ідентифікуючий зв'язок змушує думати про співробітника насамперед як працівника відділу. Неідентифікуючий зв'язок означає, що приналежність до відділу відзначається як щось другорядне.

5.2 Типи зв'язку. Ідентифікуючі та неідентифікуючі, обов'язкові та необов'язкові зв'язки

Типи зв'язку ідентифікуюча та неідентифікуюча (див. малюнок 5.1) відноситься не до теорії реляційних баз даних, а до стандарту моделювання IDEF1X, на якому заснований ERwin (він же AllFusion Data Modeller).

Якщо зовнішній ключ створює залежну (слабку) сутність, він передається у групу атрибутів, утворюють первинний ключ цієї сутності. У цьому випадку утворюється ідентифікуючий зв'язок. Вона завжди обов'язкова.

Неідентифікуючий зв'язок використовується для з'єднання двох сильних сутностей. Вона передає ключ до області неключових атрибутів.

Для неідентифікуючого зв'язку можна вказати обов'язковість (всього зв'язку, а не його кінця). Якщо зв'язок обов'язковий (ERwin це завдання ознаки No Nulls), то атрибути зовнішнього ключа отримають ознаку NOT NULL, що означає неприпустимість невизначених значень. Для необов'язкового зв'язку (ознака Nulls Allowed) зовнішній ключ може набувати значення NULL .

Після того, як у "Мова SQL"ми познайомимося з мовою SQL, використовуючи прямий інжиніринг, можна буде генерувати скрипт SQL, що створює фрагмент схеми бази. Але й зараз, якщо ви вже хоч трохи знайомі з SQL, то, пройшовши шлях Tools > Forward Engineer/Schema Generation, а потім натиснувши кнопку Preview, перегляньте згенерований текст.

Навіщо при розгляді нормалізації ми збираємося використати складнішу модель "сутність-зв'язок", а не обмежуємося класичним підходом у рамках реляційної моделі? Адже додавання понять сильної та слабкої сутності, ідентифікуючого зв'язку, обов'язкового та необов'язкового неідентифікуючого зв'язків істотно ускладнює семантику моделі даних.

Введення перерахованих п'яти понять більше високого рівнядає мову, що краще відображає особливості завдання і тому більш зрозумілий розробнику. Це дозволить швидко та без формальних перетворень отримати вихідну схему реляційної базимайже у закінченому вигляді (пізніше ми цю думку висловимо точніше: "у третій нормальній формі або нормальній формі Бойса-Кодда").