Повна версія

Головна arrow Інформатика arrow Бази даних: проектування

  • Увеличить шрифт
  • Уменьшить шрифт


<<   ЗМІСТ   >>

Встановлення зв'язків між сутностями

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

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

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

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

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

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

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

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

image161

Мал. 3.15. Базове опис зв'язку в ERWin


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

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

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

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

image162

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


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

image163

Мал. 3.17. Визначення типу зв'язку в ERWin


Оскільки зв'язку один - до - одному і один - до - багатьох є спорідненими і відмінності в них полягають тільки в потужності і деяких більш жорстких вимогах, то перемикання між цими типами зв'язків можна здійснювати в рамках діалогового вікна налаштування зв'язку, переводячи зв'язок з типу "Не ідентифікує "в тип" идентифицирующая ". У цьому випадку параметр "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", первинному створенні екземплярів в дочірньої сутності і подальшим їх погоджуванням з екземпляром у батьківській суті.

image164

Мал. 3.18. Визначення кардинальності (потужності) зв'язку в ERWin


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

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

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

image165

Мал. 3.19. Опис смислового наповнення зв'язку в ERWin


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

image166

Мал. 3.20. Опис правил міграції ключів в ERWin


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

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

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

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

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

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

image167

Мал. 3.21. Визначення правил посилальної цілісності в ЕКШіп


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

image168

Мал. 3.22. Приклад реалізації зв'язку категоризації в ERWin


Зв'язок категоризації організовується у формі безлічі зв'язків один до - одному, об'єднаних спеціалізованим графічним елементом. Для її реалізації в ЕІЛУт необхідно:

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

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

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

image169

Мал. 3.23. Визначення типу зв'язку категоризації в ERWin


Таблиця 3.1

Тіни зв'язку категоризації і позначення в ERWin

позначення

опис

про

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

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



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

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

image170

Мал. 3.24. Опис зв'язку категоризації в ОІ Чп


  • [1] Детальний розгляд правил посилальної цілісності розглядається в пункті 3.2.
 
<<   ЗМІСТ   >>