Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 1 - Проектирование БД.doc
Скачиваний:
57
Добавлен:
12.04.2015
Размер:
448.51 Кб
Скачать

Различают следующие виды атрибутов:

Простойилисоставной(композитный) атрибут. Составной атрибут состоит из набора простых атрибутов. Например,НомерЧитательскогоБилета– это простой атрибут,ДомашнийАдрес– составной, поскольку он включает простые атрибутыГород, Улица, Дом, Квартира.

Однозначный илимногозначный атрибут. Многозначный атрибут – это список (массив) однотипных значений. Многозначным атрибутом может быть атрибутСписокКлючевыхСловсущности КНИГА.

Базовый илипроизводный (вычислимый) атрибут. Базовый атрибут хранит присвоенное ему значение, производный – вычисляется по некоторому правилу из других атрибутов. Например,ВозрастЧитателяможно вычислить, знаяДатуРождения. Через год вычислимый атрибут изменится автоматически, а базовый останется неизменным.

Обязательный илинеобязательный(отсутствующий) атрибут. Обязательный атрибут должен быть заполнен у каждого экземпляра сущности. Необязательный атрибут может иметь "пустое" значение, например,Телефончитателя.

Ключевойатрибут (идентификатор) – атрибут, который может использоваться для различения (идентификации) экземпляров сущностей. Идентификатор может быть составным (например,СерияПаспортаиНомерПаспорта). У сущности ЧИТАТЕЛЬ идентификатором являетсяНомерЧитательскогоБилета, поскольку номера билетов не повторяются. Ключевые атрибуты – всегда обязательные.

Изображение атрибутов на ER-диаграмме показано на рис.4.

Рис. 4. Атрибуты сущности перечисляются под заголовком в прямоугольнике сущности. Ключевые атрибуты подчеркиваются сплошной линией, вычислимые – пунктиром. Атрибуты связей изображаются в прямоугольнике под связью. Связь АБОНЕМЕНТ может иметь атрибут СрокВозврата.

В модели "сущность-связь" существует понятие сильных и слабых сущностей. Сильная (независимая) сущность– такая, которая может существовать и идентифицироваться независимо от того, связана она с другими сущностями или нет.Слабая (зависимая) сущностьне может существовать, не будучи связанной с другой сущностью (эта сущность является сильной по отношению к данной слабой сущности). Примером слабой сущности может быть ТРЕБОВАНИЕ_НА_КНИГУ (рис.5). Сущность ТРЕБОВАНИЕ_НА_ КНИГУ становится бессмысленной, если из модели исключить сущность КНИГА. Обратное неверно. Сущность КНИГА продолжает существовать и не теряет своей полезности, если исчезнет сущность ТРЕБОВАНИЕ_НА_КНИГУ. Таким образом, сущность КНИГА является сильной по отношению к сущности ТРЕБОВАНИЕ_НА_КНИГУ.

Ключевой атрибут сущности ТРЕБОВАНИЕ_НА_КНИГУ составной, он включает идентификатор сущности КНИГА – полеИнвентарныйНомерКниги. Слабая сущность, зависящая от сильной по ключевому полю, как в данном примере, называетсяидентификационно-зависимой, а связь –идентификационной(identifying relationship).

Вопрос о том, какую сущность считать слабой, а какую сильной, спорный. Критерием может быть ответ, теряет ли сущность свой логический смысл, если из модели исключить сущность другого класса. Если да, то сущности зависимы.

Рис. 5. Слабая сущность ТРЕБОВАНИЕ_НА_КНИГУ обозначается прямоугольником с закругленными углами. На линии связи, связывающей сильную и слабую сущности, рядом со слабой сущностью изображается ромб.

В ER-модели допускается иерархия классов сущностей. Это значит, что у любого класса сущности может быть несколько подтипов. Подтип (subtype) сущности – это новый класс сущности, который наследует все атрибуты и связи базового класса и добавляет к ним свои собственные атрибуты и связи. При этом базовый класс сущностей называется супертипом (supertype) или надтипом. Например, у многотомных изданий книг появляются новые свойства, не применимые к обычным, однотомным, книгам: количество томов, номер тома, название тома, количество страниц в томе и др. Многотомные издания можно вынести в подтип сущности КНИГА (рис.6). Аналогично можно создать еще один подтип сущности КНИГА – сущность УЧЕБНИК с новыми атрибутами: специальность и название предмета (рис.6). Данный класс сущности, его непосредственные подтипы, подтипы подтипов и т.д. образуют иерархию типов для данного класса сущностей.

Рис. 6. Пример иерархии типов сущностей. Значокпоказывает, что подтипы наследуют все атрибуты и связи супертипа. Пустые овалы со стороны класса КНИГА означают, что подтипы не являются обязательными. То есть существуют книги, которые нельзя отнести ни к многотомным изданиям, ни к учебникам, а только к надтипу КНИГА.

Подтипы МНОГОТОМНОЕ_ИЗДАНИЕ и УЧЕБНИК являютсяневзаимоисключающими(not exclusive). То есть могут существовать книги, которые одновременно являются и учебниками, и многотомными изданиями. В отличие от принципов ООП, где экземпляр объекта принадлежит ровно одному классу, в модели "сущность-связь" экземпляр сущности может одновременно принадлежать нескольким подтипам одного супертипа. Максимальное число этих подтипов записывается рядом с дугой. Для нашего примера, то есть невзаимоисключающих подтипов, это число ограничено только числом подтипов (рис.6).

Существуют такжевзаимоисключающие(exclusive) подтипы, когда экземпляр сущности может принадлежать только одному из подтипов. Рассмотрим пример. Читателями библиотеки, работающей внутри вуза, могут быть студенты, аспиранты и преподаватели. Каждой категории читателей соответствует подтип, различающийся набором атрибутов (рис.7). Подтипы СТУДЕНТ, АСПИРАНТ, ПРЕПОДАВАТЕЛЬ являются взаимо-исключающими, поскольку читатель библиотеки выступает только в одной из ролей.

Рис.7. Пример взаимоисключающих подтипов. Поперечные черточки на связях со стороны сущности ЧИТАТЕЛЬ означают, что подтипы обязательные, то есть каждый читатель должен быть либо студентом, либо аспирантом, либо преподавателем. У взаимоисключающих подтипов дуга помечается цифрой 1.

Пример 1

Составить модель "сущность-связь" для предметной области:

Транспортное предприятие выполняет грузовые перевозки по заявкам организаций и населения. Каждый автомобиль обслуживают два водителя, работающие посменно. Расписание работы каждого водителя хранится в базе данных. Грузоперевозки выполняются по предварительным заявкам. Заявка включает: марку автомобиля, пункт назначения, время начала и окончания работ, задание, информацию о заказчике. Если заказчиком является организация, хранится ее название, ИНН, юридический адрес, телефон. Если заказчик – частное лицо, то хранятся паспортные сведения и контактный телефон. В базе учитывается, какой именно автомобиль обслужил данную заявку.

Одно из возможных решений задачи показано на рис.8. Имеются сущности АВТОМОБИЛЬ и ВОДИТЕЛЬ, связанные связью с кардинальностью 1:2, поскольку один автомобиль обслуживают два водителя. Связь со стороны автомобиля и со стороны водителя обязательная, поскольку к каждому исправному автомобилю прикреплен хотя бы один водитель, и водители, сами по себе, без автомобилей, не предусмотрены.

Расписание работы каждого водителя отражает сущность РАСПИСАНИЕ, она является слабой по отношению к сущности ВОДИТЕЛЬ. Атрибуты ВремяНачалаСмены и ВремяОкончанияСмены определяют время работы соответствующего водителя.

Сущность ЗАКАЗЧИК имеет два обязательных взаимоисключающих подтипа: ОРГАНИЗАЦИЯ и ЧАСТНОЕ_ЛИЦО, которые отличаются наборами атрибутов. Идентификация сущностей этих подтипов происходит разными способами: у организаций ключевым атрибутом является ИНН, а у граждан – паспортные данные. Каждый заказчик может делать несколько заказов, но заявка принадлежит ровно одному заказчику, поэтому связь ЗАКАЗЧИКа с сущностью ЗАЯВКА имеет тип 1:М. Связь обязательная с обеих сторон, потому что заявка обязательно чья-то, а заказчики регистрируются в базе только после того, как они подали заявку.

Учет, была ли обслужена заявка или нет, и какой автомобиль обслужил данную заявку, отражает связь ОБСЛУЖИВАНИЕ_ЗАЯВКИ. Она является необязательной с обеих сторон. Необязательность со стороны заявки показывает, что заявка может быть не обслужена вовсе. Необязательность связи со стороны автомобиля отражает случай, когда автомобиль (например, новый) еще не сделал ни одного выезда. Водитель, который обслужил данную заявку, определяется по времени своей работы в сущности РАСПИСАНИЕ.

Приведенная модель является одним из возможных способов решения задачи, и отнюдь не единственным.

Рис. 8. Диаграмма "сущность-связь" для примера 1.