Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_2012_лек.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
4.77 Mб
Скачать

Лекція 10. Тема: діаграми «сутність-зв’язок»

Діаграми "сутність-зв’язок" (ERD) призначені для розробки моделей даних і забезпечують стандартний спосіб визначення даних і відношень між ними [11]. Фактично за допомогою ERD здійснюється деталізація сховищ даних майбутньої системи, а також документуються сутності системи і способи їх взаємодії, включаючи ідентифікацію об’єктів, важливих для предметної області (сутностей), властивостей цих об’єктів (атрибутів) і їх відношень з іншими об’єктами (зв’язків).

Базовими поняттями ЕR-моделі даних (ER — Entity-Relationship) є сутність, атрибут і зв'язок [31].

Перший варіант моделі «сутність—зв’язок» був запропонований в 1976 р. Пітером Пін-Шен Ченом. Надалі багатьма авторами були розроблені свої варіанти подібних моделей (нотація Мартіна, нотація IDEF1X, нотація Баркера і ін.). Всі варіанти діаграм «сутність—зв’язок» виходять з однієї ідеї — рисунок завжди наочніше текстового опису. Вони використовують графічне зображення сутностей предметної області, їх властивостей (атрибутів) і взаємозв'язків між сутностями.

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

Основні поняття ЕR-ДІАГРАМ

Сутність — це клас однотипних об’єктів (людей, подій, станів, ідей, предметів і т.д.), інформація про які повинна бути врахована в моделі [31]. Сутність має ім’я, що виражене іменником в однині, і позначається у вигляді прямокутника з назвою (рис. 10.1, а). Прикладами сутностей можуть бути такі класи об’єктів, як «Студент», «Співробітник», «Товар».

Співробітник

Співробітник

Співробітник

Табельний номер

Прізвище

Ім'я

По батькові

Посада

Зарплата

Табельний номер

Прізвище

Ім'я

По батькові

Посада

Зарплата

а б в

Рисунок 10.1 – Позначення сутностей в нотації Баркера:

а – без атрибутів,

б – з атрибутами; в – з ключовим атрибутом

Екземпляр сутності — це конкретний представник даної сутності. Наприклад, конкретний представник сутності «Студент» — «Максимів». Причому сутність повинна мати деякі властивості, унікальні для кожного екземпляра цієї сутності, для того щоб розрізняти екземпляри.

Атрибут сутності — це іменована характеристика, яка являється деякою властивістю сутності. Ім’я атрибуту повинно бути виражене іменником в однині. Прикладами атрибутів сутності «Студент» можуть бути такі атрибути, як «Номер залікової книжки», «Прізвище», «Ім'я», «Рід», «Вік», «Середній бал» і тому подібне. Атрибути зображаються в прямокутнику, що позначає сутність (рис. 10.1, б).

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

Зв'язок — це відношення однієї сутності до іншої або до самої себе. Можливо по одній сутності знаходити інші, зв’язані з нею. Наприклад, зв'язки між сутностями можуть виражатися наступними фразами — «СПІВРОБІТНИК може мати декілька ДІТЕЙ», «СПІВРОБІТНИК зобов'язаний числитися точно в одному ВІДДІЛІ». Графічно зв'язок зображується лінією, яка з’єднує дві сутності (рис.10.2).

Співробітник

1,1 мати

0,N

Дитина

н алежати

Рисунок 10.2 – Приклад зв’язку між сутностями

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

Степінь зв’язку – це кількість сутностей, які приймають участь у зв’язку. Степінь зв’язку 2 називається бінарною, степінь N – N-арною. Зв’язок, в якому одна і та ж сама сутність приймає участь в різних ролях, називається рекурсивною або унарною. Зв'язок може мати один з наступних типів — рис. 10.3.

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

Такий зв'язок найчастіше свідчить про те, що ми неправильно розділили одну сутність на дві.

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

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

Кожен зв'язок може мати один з двох модальних зв'язків (рис. 10.4).

Зв'язок може мати різну модальність з різних кінців, як на рис. 10.2. Кожен зв'язок може бути прочитаним як зліва направо, так і справа наліво. Зв'язок на рис. 10.2 читається так: зліва направо: «Співробітник може мати декілька дітей»; справа наліво: «Дитина повинна належати точно одному співробітникові».

Приклад розробки простої ЕR-діаграми

Деяка оптова торгова фірма повинна виконувати наступні дії:

  • зберігати інформацію про покупців;

  • друкувати накладні на відпущені товари;

  • стежити за наявністю товарів на складі.

Виділимо всі іменники в цих пропозиціях — це будуть потенційні кандидати на сутності і атрибути, і проаналізуємо їх (незрозумілі терміни будемо виділяти знаком питання):

  • Покупець — явний кандидат на сутність.

  • Накладна — явний кандидат на сутність.

  • Товар — явний кандидат на сутність

  • (?)Склад — постає питання, скільки складів має фірма? Якщо декілька, то це буде кандидатом на нову сутність.

  • (?)Наявність товару — це, швидше за все, атрибут, але атрибут якої сутності?

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

Рисунок 10.5 – перший варіант ER-діаграми

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

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

Рисунок 10.6 – Проміжний варіант ER-діаграми

Пора подумати про атрибути сутності. Розмовляючи з співробітниками фірми, ми вияснили наступне:

  • кожен покупець є юридичною особою і має ім’я, адресу, банківські реквізити;

  • кожен товар має назву, ціну, а також характеризується одиницями вимірювання;

  • кожна накладна має унікальний номер, дату виписки, список товарів з кількостями і цінами, а також загальну суму накладної. Накладна виписується з певного складу і на певного покупця;

  • кожен склад має свою назву.

Знову запишемо всі іменники, які будуть потенційними атрибутами, і проаналізуємо їх:

  • Юридична особа — термін риторичний, ми не працюємо з фізичними особами. Не звертаємо уваги;

  • Найменування покупця — явна характеристика покупця;

  • Адреса — явна характеристика покупця;

  • Банківські реквізити — явна характеристика покупця;

  • Найменування товару — явна характеристика товару;

  • (?)Ціна товару — схоже, що це характеристика товару. Чи відрізняється ця характеристика від ціни в накладній?

  • Одиниця вимірювання — явна характеристика товару;

  • Номер накладної — явна унікальна характеристика накладної;

  • Дата накладної — явна характеристика накладної;

  • (?) Список товарів в накладній — список не може бути атрибутом. Ймовірно, потрібно виділити цей список в окрему сутність;

  • (?)Кількість товару в накладній — це явна характеристика, але характеристика чого? Ця характеристика не просто «товару», а «товару в накладній»;

  • (?)Ціна товару в накладній — знову ж таки це повинна бути не просто характеристика товару, а характеристика товару в накладній. Але ціна товару вже зустрічалася вище — це одне і те ж?

  • Сума накладної — явна характеристика накладної. Ця характеристика не є незалежною. Сума накладної рівна сумі вартостей всіх товарів, що входять в накладну;

  • Найменування складу — явна характеристика складу.

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

З виникаючим поняттям «Список товарів в накладній» все зрозуміло. Сутності «Накладна» і «Товар» зв’язані один з одним відношенням типу багато-до-багатьох. Такий зв'язок, як ми відзначали раніше, повинен бути розщепленим на два зв'язки типу один-до-багатьох. Для цього потрібна додаткова сутність. Цією сутністю і буде сутність «Список товарів в накладній». Зв'язок її з сутністю «Накладна» і «Товар» характеризується наступними фразами — «кожна накладна зобов'язана мати декілька записів із списку товарів в накладній», «кожен запис із списку товарів в накладній зобов'язаний включатися рівно в одну накладну», «кожен товар може включатися в декілька записів із списку товарів в накладній», «кожен запис із списку товарів в накладній зобов'язаний бути пов'язаним рівно з одним товаром». Атрибути «Кількість товару в накладній» і «Ціна товару в накладній» є атрибутами сутності «Список товарів в накладній».

Так само поступимо із зв'язком, що сполучає сутність «Склад» і «Товар». Введемо додаткову сутність «Товар на складі». Атрибутом цієї сутності буде «Кількість товару на складі». Таким чином, товар числитиметься на будь-якому складі і кількість його на кожному складі буде своєю.

Тепер можна внести все це до діаграми (рис. 10.7).

Рисунок 10.7 – Кінцевий варіант ER-діаграми

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

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

2. Що розуміють під терміном «специфікації»? У чому складність їх уточнення? Назвіть моделі, що використовуються як функціональні специфікації при структурному підході. Які характеристики проектованого програмного забезпечення описує кожна з них?

3. У яких випадках доцільно використовувати діаграми переходів станів?

4. У чому полягає основна відмінність між функціональними діаграмами і діаграмами потоків даних? У яких випадках використання діаграм потоків даних є переважним?

5. Що показують ER-діаграми?