Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОБД_КП.doc
Скачиваний:
18
Добавлен:
07.02.2016
Размер:
284 Кб
Скачать
☆

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

При розробці ER-моделей необхідно отримати наступну інформацію про предметну область:

  1. Список сутностей предметної області.

  2. Список атрибутів сутностей.

  3. Опис взаємозв'язків між сутностями.

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

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

Наприклад, в ході бесіди з менеджером з продажу, з'ясувалося, що він (менеджер) вважає, що проектована система повинна виконувати наступні дії:

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

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

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

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

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

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

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

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

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

Одразу виникає очевидний зв'язок між сутностями - "покупці можуть купувати багато товарів" і "товари можуть продаватися багатьом покупцям". Перший варіант діаграми виглядає так:

Рисунок 7

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

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

Рисунок 8

Пора подумати про атрибути сутностей. В ході розмови зі співробітниками фірми, з'ясувалося наступне:

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

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

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

  • Кожен склад має своє найменування.

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

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

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

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

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

  • Назва товару - явна характеристика товару.

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

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

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

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

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

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

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

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

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

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

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

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

Тепер можна внести все це в діаграму:

Рисунок 9