Проектирование методом ER-диаграмм
Осуществим проектирование базы данных методом ER-диаграмм. Данный метод содержит следующие этапы проектирования:
определение предметной области и выделение сущностей и связей между ними;
построение ER-диаграмм типа с учетом всех сущностей и связей между ними;
формирование набора предварительных отношений с указанием первичных ключей для них;
добавление неключевых отношений;
анализ полученных отношений и пересмотр если необходимо.
Однако формирование набора предварительных отношений (этап 2) необходимо осуществлять по определенным правилам. Они указаны ниже:
Формирование отношений по связи 1:1.
Правило 1.Если тип связи 1:1 и класс принадлежности сущности обязательный : обязательный, то формируется одно отношение, в качестве первичного ключа которого может быть выбран первичный ключ одной из сущностей (рис. 2.1).
Рис.2.1. Формирование отношения по правилу 1.
Правило 2.Если тип связи 1:1 и класс принадлежности сущности обязательный : необязательный или необязательный : обязательный, то под каждую сущность формируется свое отношение со своим первичным ключом. Далее к отношению по обязательной сущности добавляется в качестве атрибута первичный ключ необязательной сущности (рис. 2.2).
Рис.2.2. Формирование отношений по правилу 2.
Правило 3.Если тип связи 1:1 и класс принадлежности сущности необязательный : необязательный, то формируется три отношения: два из них составляют сущности со своими первичными ключами, а третье – служит для связи между сущностями, причем ключом третьего отношения является составной первичный ключ, составленный из двух предыдущих отношений (рис. 2.3).
Рис.2.3. Формирование отношений по правилу 3.
Формирование отношений по связи 1:M.
Правило 4.Если тип связи 1:М (М:1) и класс принадлежности сущности обязательный для М сущности, то достаточно двух отношений, по одному на каждую сущность. Кроме того, первичный ключ сущности 1 добавляется в качестве атрибута в отношение для М сущности (рис. 2.4 и рис. 2.5).
Рис.2.4. Формирование отношений по правилу 4 в случае, если класс сущности 1 необязательный.
Рис.2.5. Формирование отношений по правилу 4 в случае, если класс сущности 1 обязательный.
Правило 5.Если тип связи 1:М (М:1) и класс принадлежности сущности необязательный для М сущности, то формируется три отношения: два из них составляют сущности со своими первичными ключами, а третье – служит для связи между сущностями, причем ключом третьего отношения является составной первичный ключ, составленный из двух предыдущих отношений (рис. 2.6 и рис. 2.7).
Рис.2.6. Формирование отношений по правилу 5 в случае, если класс сущности 1 необязательный.
Рис.2.7. Формирование отношений по правилу 5 в случае, если класс сущности 1 обязательный.
Формирование отношений по связи M:M.
Правило 6.Если тип связи М:М вне зависимости от класса принадлежности сущности формируется три отношения: два из них составляют сущности со своими первичными ключами, а третье – служит для связи между сущностями, причем ключом третьего отношения является составной первичный ключ, составленный из двух предыдущих отношений. Покажем на рисунке случай, когда классы принадлежности необязательные (рис. 2.8).
Рис.2.8. Формирование отношений по правилу 6 в случае необязательных классов принадлежности.
Осуществим практическое проектирование базы данных этим методом.
Этап 1.Определение предметной области и выделение сущностей и связей между ними.
Предметная область: автопредприятие.
Сущности: Клиент [Client], Заказ [Zakaz], Техника [Car], Работники (Персонал) [Worker], Тип [Tip].
Атрибуты: код клиента [Code_cl], название фирмы [Name_cl], адрес фирмы [Adress_cl], телефон фирмы [Teleph_cl], факс фирмы [Fax_cl], ИНН фирмы [INN_cl], код работника [Code_w], фамилия работника [F_w], имя работника [N_w], отчество работника [O_w], год рождения работника [Year_w], разряд работника [Raz_w], стаж работника [St_w], код техники [Code_c], марка техники [Marka_c], государственный номер машины [GN_c], год выпуска [Year_c], номер двигателя машины [Dwig_c], цвет машины [Color_c], код типа [Code_tip], тип [Tip], код заказа [Code_z], дата заказа [Date_z], адрес доставки заказа [Adrd_z].
Определяем первичные ключи каждой сущности:
Client (Code_cl, …)
Car (Code_c, …)
Worker (Code_w, …)
Tip (Code_tip, …)
Zakaz (Code_z, …)
Определяем связи:
Клиент делает заказ
Техника имеет тип
Персонал выполняет1 заказ
Техника выполняет2 заказ
Персонал работает техника
Этап 2.Построение ER-диаграмм типа с учетом всех сущностей и связей между ними.
Данный этап отражен на рис. 2.9.
Рис. 2.9. ER-диаграммы типа с учетом всех сущностей и связей между ними.
Этап 3.Формирование набора предварительных отношений с указанием первичных ключей для них.
Для связи делает (пр. 4) – два отношения:
Client (Code_cl, …)
Zakaz (Code_z, Code_cl, …)
Для связи имеет (пр. 4) – два отношения:
Tip (Code_tip, …)
Car (Code_c, Code_tip, …)
Для связи выполняет1 (пр. 6) – три отношения:
Car (Code_c, Code_tip, …)
Zakaz (Code_z, Code_cl, …)
ZakazCar (Code_z, Code_c)
Для связи выполняет2 (пр. 6) – три отношения:
Worker (Code_w, …)
Zakaz (Code_z, Code_cl, …)
ZakazWorker (Code_z, Code_w)
Для связи работает (пр. 6) – три отношения:
Worker (Code_w, …)
Car (Code_c, Code_tip, …)
CarWorker (Code_c, Code_w)
Этап 4 и 5.Добавление неключевых отношений и анализ полученных отношений.
Client (Code_cl, Name_cl, Adress_cl, Teleph_cl, Fax_cl, INN_cl)
Worker (Code_w, F_w, N_w, O_w, Year_w, Raz_w, St_w)
Car (Code_c, Code_tip, Marka_c, GN_c, Year_c, Dwig_c, Color_c)
Tip (Code_tip, Tip)
CarWorker (Code_c, Code_w)
Zakaz (Code_z, Code_cl, Date_z, Adrd_z)
ZakazCar (Code_z, Code_c)
ZakazWorker (Code_z, Code_w)
Таким образом, при проектировании базы данных данным методом мы получаем 8 отношений и не имеем гарантии, что полученная совокупность таблиц минимальна и что в данном наборе выполняются все свойства (нет гарантии, что выполняется свойство соединения без потерь информации).