Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МР - Лекция № 1.doc
Скачиваний:
0
Добавлен:
06.01.2020
Размер:
4.9 Mб
Скачать
    1. Модель «сущность/связь»

Одним из наиболее известных и получивших широкое распространение методов семантического моделирования является построение модели «сущность/связь» (или ER-модели). Этот подход строится на использовании модели «сущность/связь», предложенной Ченом (Chen) в 1976 году и с тех пор неоднократно усовершенствовавшейся как самим Ченом, так и многими другими исследователями.

ER-модель включает аналоги всех семантических объектов, представленных в таблице № 1.1, каждый из которых подробно рассматривается далее. Прежде всего отметим, что Чен предложил не только саму ER-модель, но и соответствующую ей технологию построения диаграмм, получивших название «ER-диаграммы». На рис. 1.6 представлен пример простой подобной диаграммы, на которую мы будем ссылаться при дальнейшем изложении материала данного раздела.

Рис. 1.6 Пример диаграммы модели «сущность/связь»

  • Сущности. Работа начинается с определения сущности (entity) как «предмета, который может быть четко идентифицирован». При этом сущности подразделяются на сильные и слабые.

Слабой называется сущность, существование которой зависит от другой сущности, т.е. она не может существовать, если этой другой сущности не существует.

Например, сущность «Подчиненный» является слабой, поскольку она не может существовать (в контексте базы данных), если не существует соответствующей сущности «Работник». В частности, если сведения о некотором работнике будут удалены, то и сведения обо всех зависящих от него работниках также будут удалены.

Сильной называется сущность, которая не является слабой.

  • Свойства. Сущности (и связи) обладают некоторыми свойствами (property). Все сущности или связи одного и того же типа обладают некоторыми общими свойствами. Например, все работники имеют личный номер, имя, зарплату и т.д. Значения свойств каждого типа извлекаются из соответствующего множества значений, которое в реляционной модели называется доменом. Ниже перечислены некоторые разновидности свойств и указаны их особенности.

  • Простое или составное свойство. Например, свойство «Имя работника» может быть составным, если его значение составляется из значений простых свойств «Имя», «Отчество», «Фамилия».

  • Ключевое свойство (т.е. уникальное, возможно, в определенном контексте).

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

  • Опущенное свойство (т.е. «неизвестное» или «неопределенное»).

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

  • Связи. Связь (relationship) определяется как ассоциация, объединяющая несколько сущностей. Например, между работником и отделом существует связь «Отд_Раб». Она определяет, что в каждом отделе работает определенное количество работников.

Сущности, включенные в связь, называют ее участниками, а количество участников связи называется ее степенью.

Пусть R является типом связи, включающей тип сущности E в качестве участника. Если каждый экземпляр сущности E участвует по крайней мере в одном экземпляре связи R, то участие сущности E в связи R называется полным, в противном случае – частичным.

Например, если каждый работник обязательно должен относиться к определенному отделу, то участие сущности «Работник» в связи между работниками и отделами («Отд_Раб») является полным. В свою очередь, если допустима ситуация, когда некоторый работник может не быть ни в каком отделе, то участие сущности «Работник» в данной связи будет частичным.

Связи в модели «сущность/связь» могут иметь тип «один к одному», «один ко многим» (иначе может называться «многие к одному») или «многие ко многим». В реляционной модели представление связей типа «один к одному» и «один ко многим» осуществляется без проблем с использованием механизма внешнего ключа. Представление связи типа «многие ко многим» является более сложной и общей задачей и реализуется с использованием таблицы (а точнее переменной-отношением), о чем будет сказано при дальнейшем рассмотрении материала курса.

  • Подтипы и супертипы сущностей. Каждая сущность имеет по крайней мере один тип, однако у некоторой сущности может быть одновременно несколько типов. Например, если некоторые работники являются программистами, то можно сказать, что тип сущности «Программист» является подтипом типа сущности «Работник» (или, что эквивалентно, тип сущности «Работник» является супертипом типа сущности «Программист»). Программисты обладают всеми свойствами работников, однако обратное утверждение неверно. Аналогично сущность «Программист» участвует во всех связях, в которых участвует сущность «Работник», однако обратное утверждение неверно. Поэтому говорится, что подтип наследует свойства и связи супертипа.

Следует обратить внимание, что они программисты (сущность «Программист») могут быть прикладными (сущность «Прикладные программисты»), а другие – системными (сущность «Системный программист»). Иначе говоря, сущность-подтип по-прежнему является типом сущности и, следовательно, может иметь собственные подтипы. Некоторый тип сущности, его непосредственные подтипы, подтипы этих подтипов и т.д. вместе образуют иерархию типов сущности, пример которой представлен на рис. 1.7.

Рис. 1.7 Пример иерархии типов сущностей

    1. ER-диаграммы

Как уже отмечалось, была введена не только сама модель «сущность/связь», но и представлена концепция ER-диаграмм. Такая диаграмма является методом представления логической структуры базы данных в графическом виде для более простого и наглядного отображения основных компонентов конкретного проекта базы данных. Популярность методов ER-моделирования как подхода для проектирования баз данных, скорее всего, объясняется именно наличием подобной диаграммной технологии, а не чем-либо иным. Рассмотрим правила создания ER-диаграмм.

  • Сущности. Каждый тип сущности на ER-диаграмме представляется в виде отдельного прямоугольника с указанным внутри именем сущности, причем прямоугольники сущностей слабых типов рисуются двойной линией (см. рис. 1.8).

Рис. 1.8 Примеры графического изображения сущностей

Пример 1.1: Основываясь на ER-диаграмме, представленной на рис. 1.6, можно отметить, что сильными сущностями являются «Отдел», «Работник», «Поставщик», «Деталь», «Проект»; а слабой сущностью является «Подчиненный».

  • Свойства. Свойства отображаются на ER-диаграмме в виде эллипсов, содержащих имена этих свойств. Эллипсы соединяются с соответствующей сущностью (или связью) сплошной линией. Контур эллипса рисуется штриховой линией, если свойство производное, и двойной линией, если свойство многозначное. Если свойство составное, то составляющие его свойства показаны в виде других эллипсов, соединенных с эллипсом составного свойства с помощью дополнительных линий. Имена ключевых свойств обычно подчеркиваются, а множества значений не отображаются вовсе (см. рис. 1.9).

Рис. 1.9 Примеры графического изображения свойств

Пример 1.2: Для рассматриваемого примера у сущности «Работник» можно выделить следующие свойства: «Номер Работника» (личный номер работника – ключевое поле); «ФИО» - составное свойство, состоящее из «Имени», «Отчества» и «Фамилии»; «Зарплата».

  • Связи. Каждый тип связи показан на ER-диаграмме в виде ромба с названием связи внутри. Ромб рисуется двойной линией, если это связь между слабым типом сущности и типом сущности, от существования которого она зависит. Участники каждой связи соединяются с ромбом соответствующей связи сплошными линиями. Каждая такая линия содержит надпись «1» или «М» для обозначения типа связи («один к одному», «один ко многим» и т.д.). Двойная линия обозначает полное участие в связи данной стороны (см. рис. 1.10).

Рис. 1.10 Примеры графического изображения связей

Пример 1.3 В рассматриваемом примере (рис. 1.6) можно выделить следующие связи: «Отд_Раб» (связь типа «один ко многим»), «Раб_Подч» (связь между сущностью «Работник» и слабой сущностью «Подчиненный», причем связь со стороны сущности «Подчиненный» является полной).

Имеется возможность указания ролей, которые выполняют сущности в связи. Для этого над линией, соединяющей соответствующую сущность и связь, надписывается наименование этой роли. На рис. 1.6 роли указаны для сущности «Деталь» для связи «Состав_дет». Роль «Компонент» говорит о том, что деталь может являться составной частью другой детали, а роль «Объединение» - о том, что деталь может состоять из других деталей. Связь «Состав_дет» является примером рекурсивной связи.

  • Подтипы и супертипы. Пусть тип сущности Y является подтипом типа сущности X. Тогда от прямоугольника Y к прямоугольнику X можно провести сплошную линию со стрелкой на конце возле Y. Эта линия представляет то, что иногда называется связью принадлежности.

Пример 1.4 Пример представлен на рис. 1.7, где тип сущности «Программист» является подтипом типа сущности «Работник», а типы сущностей «Прикладной программист» и «Системный программист» являются подтипами типа сущности «Программист».

В определенном смысле построенная в соответствии с описанными выше правилами ER-диаграмма является проектом базы данных. Однако одной этой модели не достаточно для построения какой-либо формальной модели базы данных, например реляционной, ввиду того, что информации, отображаемой на диаграмме, не достаточно для осуществления такого отображения, так как ER-модель не является формальной. Таким образом ER-моделирование (или семантическое моделирование в какой-либо иной форме) является начальным шагом в процессе проектирования базы данных.

26