В процессе построения диаграммы "сущность-связь" можно выделить несколько этапов:
1. Определение списка сущностей выбранной предметной области.
2. Определение списка атрибутов сущностей.
3. Описание связей между сущностями (степени, классы принадлежности связей, а также атрибуты связей, если они необходимы).
4. Организация данных в виде диаграммы "сущность-связь".
В качестве примера построим диаграмму, отображающую связь данных для информационной системы учета продажи лекарств в аптеке. БД должна хранить информацию о ЛС, поставляемых в аптеку, их ежедневной продаже, заказах на поставку лекарств, а также о поставщиках ЛС.
Составим список сущностей, необходимых для реализации поставленной задачи:
Лекарственные средства (ЛС)
Для этой сущности необходимы следующие атрибуты:
· Код ЛС – уникальный идентификатор, ключевой атрибут;
· Название ЛС;
· Единица измерения – упаковки (штуки), граммы и т.п.;
· Срок хранения в днях – для определения даты окончания срока годности ЛС;
|
|
· Условия хранения – температура, влажность и т.п.
Поставщики
· Код поставщика – уникальный идентификатор, ключевой атрибут;
· Поставщик – название организации или ФИО физического лица;
· Код города – выделим отдельно город, где находится поставщик, для удобства дальнейшей работы (например, для поиска;)
· Адрес – поскольку город выделен в отдельный атрибут, то в адресе остается улица и дом.
Продажи
· Дата продажи;
· Код ЛС – какое именно ЛС было продано;
· Количество – сколько продано этого ЛС в тех единицах измерения, которые указаны для этого ЛС в сущности ЛС;
· Цена продажи – цена при продаже за единицу продукта.
4. Города – поскольку мы выделили отдельно город из адреса поставщика, то возникает необходимость в этой сущности
· Код города – уникальный идентификатор, ключевой атрибут;
· Город
Используя выше перечисленные атрибуты, получим список сущностей:
· Лекарственные средства (Код ЛС, Название ЛС, Единица измерения, Срок хранения в днях, Условия хранения).
· Поставщики (Код поставщика, Поставщик, Код города, Адрес).
· Продажи (Дата продажи, Код ЛС, Количество, Цена продажи). Обратите внимание, что в этой сущности ключ составной, поскольку каждый день продается множество лекарств, и конкретное ЛС может быть продано в разные дни.
· Города (Код города, Город).
Рассмотрим связи, существующие между описанными выше сущностями:
1. ЛС в аптеку поставляются поставщиками, т.е. существует связь M:N (многие-ко-многим) «Поставляют» между сущностями Лекарственные средства и Поставщики. Эта связь имеет следующие атрибуты:
|
|
· Дата поставки;
· Код поставщика – какой поставщик поставил этот продукт;
· Код ЛС – какой именно продукт был поставлен;
· КоличествоП – сколько поставлено этого ЛС в тех единицах измерения, которые указаны для этого ЛС в сущности Лекарственные средства;
· Цена поставки – цена при поставке за единицу ЛС;
· Дата изготовления – дата изготовления ЛС. Ключом будет составной атрибут: Дата поставки, Код поставщика, Код ЛС
2. ЛС должны быть заказаны поставщикам, т.е. существует связь M:N (многие-ко-многим) «Заказаны» между сущностями Лекарственные средства и Поставщики. Эта связь имеет следующие атрибуты:
· Дата заказа;
· Код поставщика – какому поставщику заказано это ЛС;
· Код ЛС – какое именно ЛС было заказано;
· КоличествоЗ – сколько заказано этого ЛС в тех единицах измерения, которые указаны для этого ЛС в сущности Лекарственное средство.
Ключом будет составной атрибут: Дата заказа, Код поставщика, Код продукта.
3. В аптеке происходит продажа ЛС, т.е. существует связь N:1 (многие-к-одному) «Происходит» между сущностями Продажи и Лекарственные средства.
4. Поставщики находятся в определенном городе, т.е. существует связь N:1 (многие-к-одному) «Находятся» между сущностями Поставщики и Города.
После объединения всех фрагментов в общую модель и добавления атрибутов, получится диаграмма "сущность-связь", приведенная на Рис. 9.