3.2. Пример проектирования модели "сущность-связь"
Пример 1
Описание предметной области: транспортное предприятие выполняет грузовые перевозки по заявкам организаций и населения. Каждый автомобиль обслуживают два водителя, работающие посменно. Расписание работы каждого водителя хранится в базе данных. Грузоперевозки выполняются по предварительным заявкам. Заявка включает: марку автомобиля, пункт назначения, время начала и окончания работ, задание, информацию о заказчике. Если заказчиком является организация, хранится ее название, ИНН, юридический адрес, телефон. Если заказчик – частное лицо, то хранятся паспортные данные и контактный телефон. В базе учитывается, какой именно автомобиль фактически обслужил заявку.
Одно из возможных решений задачи показано на рис.8. Имеются сущности АВТОМОБИЛЬ и ВОДИТЕЛЬ, связанные связью с кардинальностью 1:2, поскольку один автомобиль обслуживают два водителя. Связь со стороны автомобиля и со стороны водителя обязательная, поскольку к каждому исправному автомобилю прикреплен хотя бы один водитель, и водители, сами по себе, без автомобилей, не предусмотрены. Расписание работы каждого водителя отражает сущность РАСПИСАНИЕ, она является слабой по отношению к сущности ВОДИТЕЛЬ. Атрибуты ВремяНачалаСмены и ВремяОкончанияСмены определяют время работы соответствующего водителя.
Сущность ЗАКАЗЧИК имеет два обязательных взаимоисключающих подтипа: ОРГАНИЗАЦИЯ и ЧАСТНОЕ_ЛИЦО, которые отличаются наборами атрибутов. Идентификация сущностей этих подтипов происходит разными способами: у организаций ключевым атрибутом является ИНН, а у граждан – паспортные данные. Каждый заказчик может делать несколько заказов, но заявка принадлежит ровно одному заказчику, поэтому связь ЗАКАЗЧИКа с сущностью ЗАЯВКА имеет тип 1:М. Связь обязательная с обеих сторон, потому что заявка обязательно чья-то, а заказчики регистрируются в базе только после того, как они подали заявку.
Учет, была ли обслужена заявка или нет, и какой автомобиль обслужил данную заявку, отражает связь ОБСЛУЖИВАНИЕ_ ЗАЯВКИ. Она является необязательной с обеих сторон. Необязательность со стороны заявки показывает, что заявка может быть не обслужена вовсе. Необязательность связи со стороны автомобиля отражает случай, когда автомобиль (например, новый) еще не сделал ни одного выезда. Водитель, который обслужил данную заявку, определяется по времени своей работы в сущности РАСПИСАНИЕ.
Приведенная модель является одним из возможных способов решения задачи, но отнюдь не единственным. ■
Do'stlaringiz bilan baham: |