Инфологическая модель данных. Модель «сущность-связь» (ER-модель).

Инфологическая модель данных применяется на втором этапе разработки базы данных, следующем за словесным описанием. Задача инфологической модели – привести четкое и стройное описание предметной области, которое будет понятно не только специалистам (разработчикам), но и любым другим людям, которым придется с ней столкнуться.

Инфологическая модель данных предоставляет интуитивно понятное формализованное описание предметной области. Емкость этого описания должна быть достаточной для оценки глубины и корректности проработки проекта базы данных. Кроме того, данное описание должно быть независимым от выбора конкретной СУБД.

Инфологическое проектирование в первую очередь связано с попыткой представления семантики предметной области в модели базы данных. Данная проблема давно интересует разработчиков, и еще в 70-х года 20 века было предложено несколько моделей данных, названных семантическими моделями. К ним можно отнести семантическую модель данных, которую предложили Хаммер (Hammer) и Мак-Леон (McLeon) в 1981 году, функциональную модель данных, которую также в 1981 году предложил Шипман (Shipman), модель «сущность-связь», предложенную Ченом (Chen) в 1976 году, а также ряд других моделей.

У каждой из этих моделей были свои сильные и слабые стороны, но испытание временем выдержала только одна из них – модель «сущность-связь» Чена. В настоящий момент эта модель, которую еще называют «Entity Relationship», фактически стала стандартом при инфологическом моделировании баз данных. Общепринятым стало сокращенное название ER-модель. Большинство современных CASE-средств содержат инструментальные средства для описания данных в формализме этой модели. Кроме того, разработаны методы автоматического преобразования проекта базы данных из ER-модели в реляционную модель, при котором преобразование выполняется сразу в даталогическую модель, соответствующую конкретной СУБД.

Пожалуй, единственным недостатком ER-модели является отсутствие единой общепринятой системы обозначения, поэтому разные CASE-системы используют разные графические нотации. Однако, они не сильно отличаются друг от друга, поэтому изучив одну, можно легко понять и другие нотации.

Как и любая другая модель, модель «сущность-связь» имеет несколько базовых понятий, на основании которых стоятся уже более сложные объекты по заранее определенным правилам.

ER-модель в наибольшей степени согласуется с концепцией объектно-ориентированного проектирования, которая в настоящий момент является без сомнений основной при разработке крупных информационных систем.

В основе модели «сущность-связь», как следует из ее названия, лежат два основных понятия – сущность и связь.

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

Каждая сущность имеет уникальное в пределах моделируемой системы имя. Объект, которому соответствует сущность, обладает набором характеристик, определяющих свойства данного представителя класса. Характеристики этого набора образуют атрибуты сущности. Описывая сущность, необходимо выбирать такой набор атрибутов, который позволит различать конкретные экземпляры сущности. Набор атрибутов, который позволяет однозначно идентифицировать конкретный экземпляр сущности, называется ключевым. В частности, однозначно идентифицировать экземпляр сущности может и какой-то один единственный атрибут.

Например, информационная система университета оперирует данными учащихся, а соответствующая база данных содержит множество записей, соответствующих различным студентам. Описанием класса будет являться сущность Студент. Экземпляром сущности будет являться описание конкретного студента. Сущность Студент может, например, иметь следующий набор атрибутов: Фамилия, Имя, Отчество, Дата рождения, Год поступления, Номер студенческого билета. Для сущности Студент ключевым атрибутом будет Номер студенческого билета, так как у всех студентов номера студенческих билетов различны.

Одним из общепринятых графических обозначений сущности является прямоугольник, в верхней части которого написано имя сущности, а ниже перечислены атрибуты сущности. При этом ключевые атрибуты особо помечаются, например, подчеркиванием или специальным шрифтом. Описанная выше сущность Студент может быть изображена следующим образом:

Сушность "Студент"

Пример определения сущности в модели «сущность-связь»

Вторым основополагающим понятием ER-модели является связь – бинарная ассоциация, обозначающая, как сущности соотносятся или взаимодействую между собой. Связь может существовать не только между двумя различными сущностями, но и между сущностью и ей же самой. Такая связь называется рекурсивной.

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

Связи обладают двумя основными качествами – множественность и обязательность. Множественность связи обозначает, со сколькими экземплярами второй сущности связан экземпляр первой и наоборот. Обязательность связи указывает, должен ли каждый экземпляр сущности участвовать в этой связи или нет. Помимо прочего связь имеет имя, а также имена ролей со стороны обеих сущностей.

По множественности связи делятся на три типа: один-к-одному (1:1), один-ко-многим (1:М) и многие-ко-многим (М:М). Связь один-к-одному означает, что экземпляр одной сущности связан только с одним экземпляром другой сущности. Связь один-ко-многим означает, что один экземпляр сущности, расположенный слева в связи, может быть (но не обязан!) связан с несколькими экземплярами другой сущности, расположенными справа в связи. И наконец, связь многие-ко-многим означает, что как один экземпляр первой сущности может быть связан с несколькими экземплярами второй сущности, так и наоборот, один экземпляр второй сущности может быть связан с несколькими экземплярами первой сущности.

Например, рассмотрим связь между сущностями Студент и Преподаватель, которая обозначает руководство дипломной работой. Очевидно, что у одного студента может быть только один руководитель. Вместе с тем, один и тот же преподаватель может одновременно руководить несколькими студентами. Это означает, что необходимая связь по множественности принадлежит к типу 1:М (один-ко-многим), при этом исходит она от преподавателя к студенту (в связи всегда участвует только один преподаватель, а вот студентов может быть несколько).

Пример отношения «один-ко-многим» при связывании сущностей Студент и Преподаватель

Пример отношения «один-ко-многим» при связывании сущностей Студент и Преподаватель

Как уже говорилось, в разных нотациях множественность связи отображается по-разному. Мы будем использовать нотацию CASE системы POWER DESIGNER, в которой множественность связи отображается путем разделения линии связи на 3. В нашем случае связь имеет имя «Дипломная работа» и имена ролей «Руководит» (у Преподавателя) и «Пишет диплом» (у Студента).

По обязательности связи делятся на обязательные и необязательные. При этом не играет роли множественность связи, а связь может быть обязательной с одной стороны и необязательной с другой. Обязательность связи также по-разному обозначается в разных нотациях. В нотации POWER DESIGNER необязательность связи обозначает пустой кружок на конце связи, а обязательность – перпендикулярная линия, перечеркивающая связь.

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

Зная эти уточнения и используя введенные обозначения, нашу связь можно изобразить следующим образом:

Пример обязательной и необязательной связи между сущностями

Пример обязательной и необязательной связи между сущностями

Между сущностями может быть установлено любое количество связей с разными смысловыми нагрузками. Например, между сущностями Студент и Преподаватель могут быть установлены связи «Дипломная работа» и «Лекции». Первая связь будет означать уже рассмотренный случай написания студентом дипломной работы под руководством того или иного преподавателя, а вторая связь – лекции каких преподавателей слушает студент и каким студентам данный преподаватель читает лекции. Очевидно, что вторая связь – пример связи «многие-ко-многим».

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

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

Сущность, на основе которой строятся подтипы, называется супертипом. Любой экземпляр супертипа относится к конкретному подтипу. Для графического изображения принципа категоризации сущностей используется специальный графический элемент – узел-дискриминатор. В нотации POWER DESIGNER узел-дискриминатор изображается в виде полукруга, обращенного выпуклой стороной к супертипу. Эта сторона соединяется стрелкой с супертипом, а к диаметру полукруга линиями присоединяются подтипы данной сущности.

Узел-дискриминатор может быть взаимоисключающим (mutually exclusive, M/E) или нет. Взаимоисключающий узел-дискриминатор означает, что один экземпляр сущности супертипа может быть связан только с одним экземпляром сущности подтипа, и для каждого экземпляра сущности супертипа существует потомок. Простой узел-дискриминатор подобных ограничений не накладывает.

Диаграмма подтипов сущности Отметка

Диаграмма подтипов сущности Отметка

Рассмотрим в качестве примера категоризацию сущности Отметка. Во врем обучения студенты получают отметки трех типов: за Коллоквиумы, Зачеты и Экзамены. Приведенная в примере диаграмма изображает, что каждая из отметок является отметкой одного из трех указанных типов. Наследуемым от суперсущности общим атрибутом для всех подтипов будет Код отметки.

В результате построения модели предметной области в виде набора сущностей и связей получаем связный граф. В полученном графе необходимо избегать циклических связей – они означают некорректность модели.

В качестве заключительного примера спроектируем инфологическую модель системы, предназначенной для хранения отметок студентов. Разработку модели начнем с выявления основных сущностей – объектов моделируемой предметной области.

Центральными сущностями модели являются Студент и Отметка, что непосредственно следует из названия задачи. Так как отметку ставит преподаватель, то необходима сущность Преподаватель. Кроме того, сущность Отметка имеет три подтипа (см. предыдущий пример): Коллоквиум, Зачет и Экзамен. Атрибуты сущностей очевидным образом берутся из описания предметной области.

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

Между сущностями Преподаватель и Отметка также устанавливается связь «один-ко-многим», так как один и тот же преподаватель может поставить несколько оценок (одному или многим студентам, связь можно назвать «Поставил оценки»). Связь необязательная со стороны преподавателя, но обязательно со стороны оценки. Это означает, что преподаватель мог не участвовать в приемке тех или иных экзаменов (а значить и ставить оценки), но оценки без того, кто ее поставил, быть не может.

Таким образом, инфологическая модель предметной области может быть представлена в следующем виде:

Модель базы данных

Комментарии

Все комментарии
1комментарий

Ян ОПИ(Э) 07 5 октября, 2009 в 16:34:38

(связь можно назвать «Имеет оценки») :D +5

Добавить комментарий