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

3.5.6. Діаграма сутність-зв’язок

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

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

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

Основні поняття ER-діаграм

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

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

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

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

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

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

Зв’язок може мати один з наступних типів – рис 3.33.

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

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

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

Кожен зв’язок може мати один з двох модальностей зв’язку (рис. 3.34).

Зв’язок може мати різну модальність з різних кінців, як на рис. 3.32. Кожен зв’язок може бути прочитаний як зліва направо, так і справа наліво. Зв’язок на рис. 3.32 читається так:

зліва направо: «Співробітник може мати декілька дітей»;

справа наліво: «Дитина повинна належати точно одному співробітнику».

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

Необхідно розробити інформаційну систему по замовленню деякої оптової торгової фірми, яка повинна виконувати наступні дії:

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

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

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

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

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

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

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

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

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

Одразу виникає очевидний зв’язок між сутностями – «покупці можуть купляти багато товарів» і «товари можуть продаватись багатьом покупцям». Перший варіант діаграми виглядає, як показано на рис. 3.35.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]