Моделювання в ERwin. Основи роботи у Erwin. Побудова логічної моделі даних Зв'язок багато хто до багатьох erwin

Лабораторна робота №3. Моделювання баз даних засобами Erwin

Мета роботи– набуття студентами практичних навичок створення логічних та фізичних моделей даних за допомогою CASE – засобів розробки інформаційних систем.

Основні відомості

Система ERwin підтримує пряме та зворотне моделювання баз даних. При прямому моделюванні схема бази даних описується у прямому вигляді з використанням діаграми сутність-зв'язок. Сутності на діаграмі є прямокутниками. Кожен прямокутник може мати різні візуальні атрибути. Кожній сутності має бути присвоєно унікальне ім'я. Імена сутностей необхідно ставити в однині. Це залежить від того, що система завжди оперує окремими екземплярами сутності. У цьому окремі екземпляри сутності розглядаються як об'єкти, а сутності – як об'єктів. Якщо сутності були описані при моделюванні в BPwin, їх можна просто імпортувати в ERwin. Приклад діаграми зі створеними сутностями наведено малюнку.

Рисунок 4 - Приклад діаграми із створеними сутностями

Побудова моделей у ERwin

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

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

Етапи побудови інформаційної моделі.

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

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

Створення сутності.

Для внесення сутності в модель необхідно клацнути по кнопці сутності на панелі інструментів (Erwin Toolbox), потім - по тому місцю діаграми, де необхідно розмістити нову сутність. Клацнувши правою кнопкоюмиші по суті та вибравши з спливаючого меню пункт Entity Editor, можна викликати діалог Entity Editor, у якому визначаються ім'я, опис та коментарі сутності.

Кожна сутність має бути повністю визначена за допомогою текстового опису закладці Definition. Ці визначення корисні як на логічному рівні, оскільки дозволяють зрозуміти, що це за об'єкт, так і на фізичному рівні, оскільки їх можна експортувати як частину схеми та використовувати в реальній БД ( CREATE COMMENT on entity_name). Закладки Note, Note2, Note3, UDP (User Defined Properties – Властивості, визначені користувачем) служать для внесення додаткових коментарів та визначень до сутності.

У закладці Icon кожної сутності можна поставити у відповідність зображення, яке відображатиметься в режимі перегляду моделі на рівні іконок та зображення, яке відображатиметься на всіх інших рівнях.

Закладка UDP діалогу Entity Editor служить визначення властивостей, визначених користувачем (User - Defined Properties). При натисканні кнопки цієї закладки викликається діалог User - Defined Property Editor (також викликається з меню Edit/UDPs). У ньому необхідно вказати вид об'єкта, для якого заводиться UDP (діаграма в цілому, сутність, атрибут і т.д.) та тип даних. Для внесення нової властивості слід клацнути в таблиці за кнопкою та внести ім'я, тип даних, значення за промовчанням та визначення.

Створення атрибутів.

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

Малюнок 5 - Створення нового домену Рисунок 6 - Вказівка ​​властивостей нового домену

Малюнок 7 - Значення за замовчуванням для нового домену

Рисунок 8 - Використання домену для визначення типу даних атрибуту.

Для опису атрибутів слід, клацнувши правою кнопкою по суті, вибрати в меню пункт Attribute Editor. З'явиться діалог Attribute Editor.

Якщо клацнути по кнопці New, то в діалозі New Attribute, що з'явився, можна вказати ім'я атрибута, ім'я відповідної йому в фізичної моделіколонки та домен. Домен атрибута буде використовуватися для визначення типу колонки на рівні фізичної моделі.

Для атрибутів первинного ключа у закладці General діалогу Attribute Editor необхідно зробити позначку у вікні вибору Primary Key.
Закладки Definition, Note і UDP несуть ті ж функції, що й щодо сутності, але рівні атрибутів.

Для наочності діаграми кожен атрибут можна пов'язати з іконкою. Це можна зробити за допомогою списку вибору Icon у закладці General.

Дуже важливо надати атрибуту правильне ім'я. Атрибути повинні іменуватися в однині і мати чітке значення.

Згідно з синтаксисом IDEF1X, ім'я атрибута має бути унікальним у рамках моделі (а не лише в рамках сутності!). За замовчуванням при спробі внесення існуючого імені атрибута ERwin перейменовує його. Наприклад, якщо атрибут Коментар вже існує в моделі, інший атрибут (в іншій сутності) буде названий Коментар/2, потім Коментар/3 і т.д.
При перенесенні атрибутів усередині та між сутностями можна скористатися технікою drag&drop, вибравши кнопку на панелі інструментів.

Для створення нового зв'язку слід вибрати ідентифікуючий або неідентифікуючий зв'язок у панелі інструментів (ERwin Toolbox), клацнути спочатку батьківською, а потім дочірньою сутністю.
На панелі інструментів кнопка відповідає ідентифікуючого зв'язку, кнопка зв'язку багато-багатьом і кнопка відповідає неідентифікуючого зв'язку. Для редагування властивостей зв'язку слід клацнути правою кнопкою миші і вибрати на контекстному менюпункт Relationship Editor.

У закладці General діалогу, що з'явився, можна задати потужність, ім'я і тип зв'язку.

Потужність зв'язку (Cardinality)- служить для позначення відношення числа екземплярів батьківської сутності до екземплярів дочірньої.
Розрізняють чотири типи потужності:

· загальний випадок, коли одному примірнику батьківської сутності відповідають 0, 1 або багато екземплярів дочірньої сутності, не позначається будь-яким символом;

· Символом P позначається випадок, коли одному примірнику батьківської сутності відповідають 1 або багато екземплярів дочірньої сутності (виключено нульове значення);

· Символом Z позначається випадок, коли одному примірнику батьківської сутності відповідають 0 або 1 екземпляр дочірньої сутності (виключені множинні значення);

· Цифрою позначається випадок, коли одному примірнику батьківської сутності відповідає заздалегідь задане число примірників дочірньої сутності.

За промовчанням символ, що позначає потужність зв'язку, не відображається на діаграмі. Для відображення імені слід у контекстному меню, яке з'являється, якщо клацнути правою кнопкою миші на будь-якому місці діаграми, не зайнятому об'єктами моделі, вибрати пункт Display Options/Relationship і потім увімкнути опцію Cardinality.

Тип зв'язку (ідентифікуючий/неідентифікуючий).

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

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

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

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

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

Ім'я зв'язку (Verb Phrase)- фраза, що характеризує відношення між батьківською та дочірньою сутностями. Для зв'язку однією з багатьох ідентифікуючих або неідентифікуючих достатньо вказати ім'я, що характеризує відношення від батьківської до дочірньої сутності (Parent-to-Child). Для зв'язку багатьом слід вказувати імена як Parent-to-Child, так і Child-to-Parent. Для відображення імені слід у контекстному меню, яке з'являється, якщо клацнути правою кнопкою миші на будь-якому місці діаграми, не зайнятому об'єктами моделі, вибрати пункт Display Options/Relationship і потім увімкнути опцію Verb Phrase.

Ім'я ролі або функціональне ім'я (Rolename)- це синонім атрибута зовнішнього ключа, який показує, яку роль грає атрибут у дочірній сутності. Задати ім'я ролі можна на вкладці Rolename/RI Actions діалогу Relationship Editor.

Створення ключів.

Кожен екземпляр сутності має бути унікальним і відрізнятися від інших атрибутів.

Первинний ключ (primary key)- це атрибут або група атрибутів, які однозначно ідентифікують екземпляр сутності. Атрибути первинного ключа на діаграмі не вимагають спеціального позначення - це атрибути, які знаходяться в списку атрибутів вище горизонтальній лінії. При внесенні нового атрибута в діалозі Attribute Editor для того, щоб зробити його атрибутом первинного ключа, потрібно увімкнути прапорець Primary Key у нижній частині закладки General. На діаграмі ключового атрибута можна внести до складу первинного ключа, скориставшись режимом перенесення атрибутів (кнопка на панелі інструментів).

В одній сутності може бути кілька атрибутів або наборів атрибутів, які претендують на роль первинного ключа. Такі претенденти називаються потенційними ключами (candidate key).

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

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

Альтернативний ключ (Alternative Key)- це потенційний ключ, який не став первинним.

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

На діаграмі атрибути альтернативних ключів позначаються як (Akn.m.), де n – порядковий номер ключа, m – порядковий номер атрибута в ключі. Коли альтернативний ключ містить кілька атрибутів (Akn.m.) ставиться після кожного.

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

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

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

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

Після вказівки всім атрибутам формату даних необхідно створену логічну модель перетворити на фізичну. Для цього необхідно в Toolsвибрати Derive New Model, де в якості Target Databases виберіть ODBC/Generic(Для використання в СУБД MySQL) див. Малюнок 9. Наша модель (див. Малюнок 4) буде перетворена до виду див. Малюнок 11.

Малюнок 9 - Перетворення логічної моделі на фізичну

Малюнок 10 – Фізична модель із зазначенням формату даних.

Малюнок 11 - Генерація коду SQL

Завдання

1. Виконайте побудову діаграми із заданими сутностями (пряме моделювання) для заданої предметної області.

2. Встановіть атрибути для кожної певної сутності. Використовуйте домени під час встановлення атрибутів.

3. Введіть зв'язок між сутностями. Надайте зв'язкам унікальні імена.

4. Використовуючи СУБД MYSQL, вирішіть пряму генерацію бази даних для проектованої інформаційної.

5. Звіт повинен містити концептуальну модель та фізичну базу даних у СУБД MYSQL.

Контрольні питання

1. У чому полягає відмінність логічного та фізичного рівнів представлення моделей даних за допомогою ERwin?

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

3. Які основні компоненти містять моделі даних, наведені за методологією IDEF1X?


Перелік типів даних, що підтримуються СУБД, необхідно уточнити у виробника

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

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

Етапи побудови інформаційної моделі:

· Визначення сутностей;

· Визначення залежностей між сутностями;

· Завдання первинних та альтернативних ключів;

· Визначення атрибутів сутностей;

· Приведення моделі до необхідного рівня нормальної форми;

· Перехід до фізичного опису моделі: призначення відповідностей ім'я сутності – ім'я таблиці, атрибут сутності – атрибут таблиці;

· Завдання тригерів, процедур та обмежень;

· генерація бази даних.

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

Створення сутності.

Для внесення сутності в модель необхідно клацнути по кнопці сутності на панелі інструментів (Erwin Toolbox), потім - по тому місцю діаграми, де необхідно розмістити нову сутність. Клацнувши правою кнопкою миші по суті та вибравши з спливаючого меню пункт Entity Editor, можна викликати діалог Entity Editor, у якому визначаються ім'я, опис та коментарі сутності.

Кожна сутність має бути повністю визначена за допомогою текстового опису закладці Definition. Ці визначення корисні як на логічному рівні, оскільки дозволяють зрозуміти, що це за об'єкт, так і на фізичному рівні, оскільки їх можна експортувати як частину схеми та використовувати в реальній БД (CREATE COMMENT on entity_name). Закладки Note, Note2, Note3, UDP (User Defined Properties – Властивості, визначені користувачем) служать для внесення додаткових коментарів та визначень до сутності.

У закладці Icon кожної сутності можна поставити у відповідність зображення, яке відображатиметься в режимі перегляду моделі на рівні іконок та зображення, яке відображатиметься на всіх інших рівнях.

Закладка UDP діалогу Entity Editor служить визначення властивостей, визначених користувачем (User - Defined Properties). При натисканні кнопки цієї закладки викликається діалог User - Defined Property Editor (також викликається з меню Edit/UDPs). У ньому необхідно вказати вид об'єкта, для якого заводиться UDP (діаграма в цілому, сутність, атрибут і т.д.) та тип даних. Для внесення нової властивості слід клацнути в таблиці за кнопкою та внести ім'я, тип даних, значення за промовчанням та визначення.

Створення атрибутів

Для опису атрибутів слід, клацнувши правою кнопкою по суті, вибрати в меню пункт Attribute Editor. З'явиться діалог Attribute Editor.

Якщо клацнути по кнопці New, то в діалозі New Attribute, що з'явився, можна вказати ім'я атрибута, ім'я відповідної йому у фізичній моделі колонки і домен. Домен атрибута буде використовуватися для визначення типу колонки на рівні фізичної моделі.

Для атрибутів первинного ключа у закладці General діалогу Attribute Editor необхідно зробити позначку у вікні вибору Primary Key.

Закладки Definition, Note та UDP несуть ті ж функції, що й щодо сутності, але лише на рівні атрибутів.

Для наочності діаграми кожен атрибут можна пов'язати з іконкою. Це можна зробити за допомогою списку вибору Icon у закладці General.

Дуже важливо надати атрибуту правильне ім'я. Атрибути повинні іменуватися в однині і мати чітке значення.

Згідно з синтаксисом IDEF1X, ім'я атрибута має бути унікальним у рамках моделі (а не лише в рамках сутності!). За замовчуванням при спробі внесення існуючого імені атрибута ERwin перейменовує його. Наприклад, якщо атрибут Коментар вже існує в моделі, інший атрибут (в іншій сутності) буде названий Коментар/2, потім Коментар/3 і т.д.

При перенесенні атрибутів усередині та між сутностями можна скористатися технікою drag&drop, вибравши кнопку на панелі інструментів.

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

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

На панелі інструментів кнопка відповідає ідентифікуючого зв'язку, кнопка зв'язку багато-багатьом і кнопка відповідає неідентифікуючого зв'язку. Для редагування властивостей зв'язку слід клацнути правою кнопкою миші і вибрати на контекстному меню пункт Relationship Editor.

У закладці General діалогу, що з'явився, можна задати потужність, ім'я і тип зв'язку.

Потужність зв'язку (Cardinality)- служить для позначення відношення числа екземплярів батьківської сутності до екземплярів дочірньої.

Розрізняють чотири типи потужності:

загальний випадок, коли одному примірнику батьківської сутності відповідають 0, 1 або багато екземплярів дочірньої сутності, не позначається будь-яким символом;

символом P позначається випадок, коли одному примірнику батьківської сутності відповідають 1 або багато екземплярів дочірньої сутності (виключено нульове значення);

символом Z позначається випадок, коли одному примірнику батьківської сутності відповідають 0 або 1 екземпляр дочірньої сутності (виключені множинні значення);

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

За промовчанням символ, що позначає потужність зв'язку, не відображається на діаграмі. Для відображення імені слід у контекстному меню, яке з'являється, якщо клацнути правою кнопкою миші на будь-якому місці діаграми, не зайнятому об'єктами моделі, вибрати пункт Display Options/Relationship і потім увімкнути опцію Cardinality.

Тип зв'язку (ідентифікуючий/неідентифікуючий).

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

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

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

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

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

Ім'я зв'язку (Verb Phrase)- фраза, що характеризує відношення між батьківською та дочірньою сутностями. Для зв'язку однією з багатьох ідентифікуючих або неідентифікуючих достатньо вказати ім'я, що характеризує відношення від батьківської до дочірньої сутності (Parent-to-Child). Для зв'язку багатьом слід вказувати імена як Parent-to-Child, так і Child-to-Parent. Для відображення імені слід у контекстному меню, яке з'являється, якщо клацнути правою кнопкою миші на будь-якому місці діаграми, не зайнятому об'єктами моделі, вибрати пункт Display Options/Relationship і потім увімкнути опцію Verb Phrase.

Ім'я ролі або функціональне ім'я (Rolename)- це синонім атрибута зовнішнього ключа, який показує, яку роль грає атрибут у дочірній сутності. Задати ім'я ролі можна на вкладці Rolename/RI Actions діалогу Relationship Editor.

Рис.1. Імена ролей зовнішніх ключів

У прикладі, наведеному на рис. 1, по суті Співробітник зовнішній ключ Номер відділу має ім'я ролі "Де працює", яке показує, яку роль відіграє цей атрибут по суті. За промовчанням у списку атрибутів відображається лише ім'я ролі. Для відображення повного імені атрибута (як функціонального імені, так і імені ролі) слід у контекстному меню, яке з'являється, якщо клацнути правою кнопкою миші за будь-яким місцем діаграми, не зайнятим об'єктами моделі, вибрати пункт Display Options/Entities і потім увімкнути опцію Rolename/ Attribute. Повне ім'я відображається як функціональне ім'я та базове ім'я, розділені точкою (рис. 1).

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

Рис.2. Випадок обов'язковості імен ролей

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

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

Правила цілісності посилання (Referential Integrity (RI))- логічні конструкції, які виражають бізнес-правила використання даних і є правилами вставки, заміни та видалення. Задати правила цілісності посилання можна в закладці Rolename/RI Actions діалогу Relationship Editor.

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

Рис.3. Міграція імен ролей

На рис.3 існує ідентифікуючий зв'язок між сутностями Команда та Гравець. Що буде, якщо видалити команду? Екземпляр сутності Гравець не може існувати без команди (атрибут первинного ключа У якій команді грає? Номер командине може набувати значення NULL), отже потрібно або заборонити видалення команди, поки в ній числиться хоча б один гравець, або видаляти разом з командою і всіх її гравців. Такі правила видалення (Parent Delete) називаються Parent Restrict (обмеження) та Parent Cascade (каскад). Сутності Гравець і Гол, у свою чергу, теж пов'язані ідентифікуючим зв'язком і якщо на видалення гравця накладено правило каскадного видалення всіх записів про його голи, то при видаленні команди будуть видалені всі гравці команди і всі голи, забиті цими гравцями.

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

Зв'язок багато-багатьом має іменуватися (Verb Phrase) двома фразами - в обидві сторони. Це полегшує читання діаграми.

Створення ключів.

Кожен екземпляр сутності має бути унікальним і відрізнятися від інших атрибутів.

Первинний ключ (primary key)- це атрибут або група атрибутів, які однозначно ідентифікують екземпляр сутності. Атрибути первинного ключа на діаграмі не вимагають спеціального позначення - це атрибути, які знаходяться в списку атрибутів вище горизонтальної лінії. При внесенні нового атрибуту в діалозі Attribute Editor для того, щоб зробити його атрибутом первинного ключа, потрібно увімкнути прапорець Primary Key у нижній частині закладки General. На діаграмі ключового атрибута можна внести до складу первинного ключа, скориставшись режимом перенесення атрибутів (кнопка на панелі інструментів).

В одній сутності може бути кілька атрибутів або наборів атрибутів, які претендують на роль первинного ключа. Такі претенденти називаються потенційними ключами (candidate key).

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

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

Альтернативний ключ (Alternative Key)- це потенційний ключ, який не став первинним.

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

На діаграмі атрибути альтернативних ключів позначаються як (Akn.m.), де n – порядковий номер ключа, m – порядковий номер атрибута в ключі. Коли альтернативний ключ містить кілька атрибутів (Akn.m.) ставиться після кожного.

Рис.4. Сутність "Співробітник" з відображенням ключів


Зовнішні ключі (Foreign Key)створюються автоматично, коли зв'язок з'єднує сутності: зв'язки утворюють посилання на атрибути первинного ключа дочірньої сутності і ці атрибути утворюють зовнішній ключ дочірньої сутності (міграція ключа). Атрибути зовнішнього ключа позначаються символом (FK) після імені (рис.4). Атрибути зовнішнього ключа Де працює. Номер відділу ("Де працює" - ім'я ролі) сутності Співробітник є атрибутом первинного ключа (PK) по суті Відділ.

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

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

Домени.

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

У ERwin домен може бути визначений лише один раз і використовуватись як у логічній, так і у фізичній моделі.

На логічно домени можна описати без конкретних фізичних властивостей. Фізично вони отримують специфічні властивості, які можна змінити вручну. Так, домен "Вік" може мати логічно тип Number, фізично домену буде присвоєний тип INTEGER.

Для створення домену у логічній моделі служить діалог Domain Dictionary Editor. Його можна викликати з меню Edit/Domain Dictionary за кнопкою, розташованою у верхній лівій частині закладки General діалогу Attribute Editor. Для створення нового домену в діалозі Domain Dictionary Editor слідує:

· Клацнути по кнопці New. З'являється діалог New Domain;

· Вибрати батьківський домен зі списку Domain Parent. Новий домен можна створити на основі вже створеного користувачем домену, або на основі існуючого. За замовчуванням Erwin має чотири визначені домени (String, Number, Blob, Datetime). Новий домен успадковує всі властивості батьківського домену. Ці властивості надалі можна перевизначити;

· Набрати ім'я домену в полі Logical Name. Можна також вказати ім'я домену фізично в полі Physical Name. Якщо фізичне ім'я не вказано, за умовчанням воно набуває значення логічного імені;

· Клацнути по кнопці OK;

У діалозі Domain Dictionary Editor можна зв'язати домен з іконкою, з якою він відображатиметься в списку доменів (Domain Icon), іконкою, з якою атрибут, визначений на домені, буде відображатися в моделі (Icon Inherited by Attribute).

Кожен домен може бути описаний в закладці Definition, з коментарем в закладці Note або властивістю певним користувачем в закладці UDP.

ERwin має спеціальний інструмент, який значно полегшує створення нових атрибутів у моделі, використовуючи опис доменів - Independent Attribute Browser. Цей діалог викликається (і ховається) за гарячим ключем CTRL+B. З його допомогою можна вибрати в списку домен і методом drag&drop перенести його в будь-яку сутність. У ній буде створено новий атрибут з ім'ям, яке слід встановити у вікні Name Inherited by Attribute діалогу Domain Dictionary Editor. Якщо значення поля не встановлено, за промовчанням приймається ім'я домену.

Фізично діалог Domain Dictionary Editor дозволяє редагувати фізичні властивості домену. Назва закладки залежить від вибраного сервера бази даних. На ній можна задати конкретний тип даних, що відповідають домену, правила надання NULL - значень, правила валідації (правила перевірки допустимих значень) та завдання значення за замовчуванням. Правила валідації та значення за промовчанням мають бути попередньо описані та іменовані. Для виклику діалогів редагування правил валідації та значень за промовчанням служать кнопки праворуч від відповідного списку вибору (Valid та Default).

Функції інших закладок діалогу Domain Dictionary Editor:

General.Завдання батьківського домену (Domain Parent) та імені, що присвоюється колонці під час її створення за допомогою Independent Column Browser. За допомогою опції Phisical Only домен можна визначити лише на рівні фізичної моделі.

Comment.Внесення коментарів до атрибуту.

UDP. Властивості, що визначаються користувачем.

Visual Basic- PowerBuilder. Завдання спеціальних властивостей домену для кодогенерації клієнтської програми.

Завдання виконання.

На основі раніше створеної функціональної моделі та опису предметної області створити логічну модель з використанням пакету ERwin.

Лабораторна робота № 7.
Основи роботи у Erwin. Підготовка фізичної моделі даних для створення БД

1. Мета роботи:освоєння принципів підготовки фізичної моделі даних для створення системного каталогу БД.

1. Навчальні питання

  1. Розробка реляційної моделі даних уERwin.
  2. Нормалізація фізичної моделі даних уERwin.

2. План заняття

  1. Контроль знань шляхом тестування (тест ІСЕ005).
  2. Імпорт сутності в ERwin.
  3. Розробка логічної та фізичної моделей даних у ERwinз використанням методології IDEF1Х.
  4. Нормалізація фізичної моделі даних у ERwin.
  1. Виконати імпорт сутностей у ERwin,використовуючи файл Дані _ІС_Ім'я. bpх, і на підставі отриманої множини сутностей розробити логічну модель даних.

Примітка:Якщо імена сутностей та атрибутів були створені на кирилиці (російською мовою), слід їх переписати латинськими символами.

  1. Створити логічну та фізичну моделі даних, використовуючи інструменти ERwin.

  2. у своїй папці ІСЕ.
  3. Нормалізацію фізичної моделі слід проводити шляхом вирішення зв'язків БАГАТО-ДО-БАГАТО за допомогою кнопки Many to Many Transform панелі інструментів ER winTransform Toolbar.
  4. Результати роботи зберегти у файлі
    Модель_данных_ИС_Имя_IDEF1Х.er1 у своїй папці ІСЕ.

ПРИКЛАД логічної моделі, а також нормалізованої фізичної моделі даних, виконаної в IDEF1X-технології наведено в .

4. Технологічний процес виконання завдань

4.1. Технологічний процес створення моделей даних

4.1.1. Методологія створення моделей (методологія IDEF1X)

Методологія IDEF1Xвикористовується CASE-засобом ERwinдля побудови логічної та фізичної моделей даних інформаційної системи.

ERwinмає простий і зрозумілий інтерфейс для побудови логічної та фізичної моделей даних, що обробляються системою. У логічноюмоделі допустимо створювати зв'язки БАГАТО-КО-БАГАТО між сутностями, причому ім'я атрибута ( Attribute Name) буде ім'ям атрибуту в логічноюмоделі, а ім'я стовпця ( Column Name), якщо воно задано, буде ім'ям атрибуту в фізичноїмоделі.

У будь-якій з цих моделей можна автоматично перетворити зв'язок БАГАТО-КО-Багато до зв'язку ОДИН-КО-БАГАТО.

В результаті буде створена підпорядкована таблиця, що розв'язує зв'язок БАГАТО-ДО-БАГАТО. Ця таблиця міститиме впроваджений складовий ключ (FK) з впровадженими з основних таблиць атрибутами та відповідними їм типами даних. Якщо потрібно змінити тип даних, це потрібно робити вручну.

Процес створення моделі передбачає такі етапи:

  1. Створення нової моделі можна виготовляти з вікна Computer Associates ERwin або натиснути кнопку створення моделі. В обох випадках на екран буде виведено діалогове вікно Create Model – Select Template (Рис. 5.1).
  1. У вікні Create Model - Select Template слід вибрати опцію, що визначає можливості створювати моделі даних певного типу: Logical(можна створювати тільки Логічну модель), Physical(можна створювати тільки Фізичну модель) або Logical/Physical(можна паралельно створювати обидві моделі: і Логічну , і Фізичну). Щоб мати більше можливостей, доцільно вибрати останній варіант – Logical/Physical .
  2. У групі Target Database зі списку, запропонованого у полі Database, Вибрати систему управління базами даних (СУБД) - SQL Server, а в полі Versionпотрібну версію – 2000 .
  3. У вікні, що з'явилося < Main Subject Area >/ Display] вибрати зі списку тип створюваної моделі: Logicalабо Physical(Рис. 5.2).

У панелі інструментів ERwin Toolboxмістяться кнопки, що дозволяють додавати в модель даних та редагувати її окремі фрагменти:

Select(Редагування обраного об'єкта моделі),

Entity(додавання сутності),

Many - to - many Relationship(зв'язок Багато хто до багатьох),

Identifying Relationship (ідентифікуючий зв'язок),

Non-identifying Relationship (Неідентифікуючий зв'язок).

4.1.2. Технологічний процес створення логічної моделі даних

У процесі створення моделі сутності можуть бути впроваджені шляхом імпорту зі словника сутностей, розробленого в BPwin,або шляхом створення за допомогою кнопки Entityна панелі інструментів.

Імпорт сутностей у ERwin

Зауваження

  • Експорт та імпорт сутностей можна проводити лише один раз.
  • Після проведення імпорту сутностей із BPwinпрапорці Exchange with ERwinта кнопки Updateі Deleteу діалоговому вікні Entity and Attribute Dictionary Editor стають тьмяними. Це відбувається тому, що не можна змінювати сутності та атрибути, які BPwinвикористовує спільно c ERwin.

  1. Створення нових сутностей.
    • Натиснути кнопку додавання сутностей Entityта клацнути мишею в межах вікна моделі.
    • Вписати ім'я сутності та натиснути Enter,після чого вписати ім'я атрибуту сутності.
    • Для вибору потрібного шрифту виконати пп. 1.9-1.12.
  2. Додавання нових атрибутів.
    • У контекстному меню сутності вибрати команду Attributes …і в вікні (мал. 5.4) натиснути кнопку New.
    • У вікні New Attributes(рис. 5.6) вписати ім'я атрибута у полі Attribute Name .
    • Встановити тип даних кожного атрибуту для кожної сутності: Текстовий (String), Числовий (Number), Дата/час (Datetime) або поле МЕМО (B inaryL argeOb ject, Blob) (рис. 5.5 чи рис. 5.6) .
    • Визначити ключові атрибути, встановивши прапорець Primary Keyу вікні Attributes(рис. 5.5) після виділення потрібного атрибута у полі Attribute.

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

  1. Установка зв'язку БАГАТО-ДО-БАГАТО:
    • У панелі інструментів Erwin Toolboxнатиснути кнопку Many-to-many Relationship .
    • Послідовно клацнути лівою кнопкою миші на іменах сутностей, між якими потрібно створити зв'язок (рис. 5.7).

  1. Встановлення ідентифікуючоюзв'язку ОДИН-ДО-БАГАТО:
    • У панелі інструментів Erwin Toolboxнатиснути кнопку Identifying Relationship.
    • ключового ключового атрибутупідпорядкованої сутності (FK), що знаходиться на боці БАГАТО (рис. 5.8).
    • У підлеглій сутності формується складовий ключ.

  1. Встановлення неідентифікуючоюзв'язку ОДИН-ДО-БАГАТО:
    • У панелі інструментів Erwin Toolboxнатиснути кнопку Non-identifying Relationship .
    • Послідовно клацнути лівою кнопкою миші на іменах сутностей, між якими потрібно створити зв'язок. Результатом створення зв'язку буде впровадження ключовогоатрибута головної сутності як неключового атрибуту підпорядкованої сутності (FK), що знаходиться на боці БАГАТО (рис. 5.9).

4.1.3. Технологічний процес створення фізичної моделі даних

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

  1. У фізичній моделі перевірити типи даних та встановлені між таблицями зв'язку.

4.2. Технологічний процес нормалізації фізичної моделі даних (методологія IDEF1X)

  1. У вікні Computer Associates ERwin – )
2021 wisemotors.ru. Як це працює. Залізо. Майнінг. Криптовалюта.