
Лекция №7
Тема: «Модель «сущность-связь»»
Одна из наиболее сложных проблем проектирования базы данных связана с тем, что проектировщики, программисты и конечные пользователи, как правило, рассматривают данные и их назначение по-разному. Разработанный проект позволит удовлетворить все требования пользователей только при том условии, что и проектировщики, и пользователи придут к единому пониманию того, как работает данная конкретная организация. Чтобы добиться полного понимания характера данных и способов их использования в организации, необходимо применять в процессе обмена информацией между специалистами общую модель, которая не усложнена техническими подробностями и не допускает двойных толкований. Одним из примеров модели такого типа является модель "сущность-связь" (Entity-Relationship model, или ER-модель). ER-моделирование представляет собой нисходящий подход к проектированию базы данных, который начинается с выявления наиболее важных данных, называемых сущностями (entities), и связей (relationships) между данными, которые должны быть представлены в модели. Затем в модель вносятся дополнительные сведения, например, указывается информация о сущностях и связях, называемая атрибутами (attributes), а также все ограничения, относящиеся к сущностям, связям и атрибутам. ER-моделирование — это важный метод, которым должен владеть любой проектировщик базы данных; он составляет основу методологии.
Типы сущностей
Основной концепцией ER-модели является тип сущности (entity type), который представляет группу объектов реального мира, обладающих одинаковыми свойствами. Тип сущности характеризуется независимым существованием и может быть объектом с физическим (или реальным) существованием или объектом с концептуальным (или абстрактным) существованием.
Экземпляр сущности
Однозначно идентифицируемый объект, который относится к сущности определенного типа. Каждый однозначно идентифицируемый объект типа сущности, который относится к сущности определенного типа, называется просто экземпляром сущности (entity occurrence). Термины тип сущности и экземпляр сущности широко применяются в данной книге, но если это не приводит к искажению смысла, то вместо них используется более общий термин сущность,
Каждый тип сущности обозначается именем и характеризуется списком свойств. База данных, как правило, содержит много разных типов сущностей.Например, на рис. 11.1 показаны такие типы сущностей, как Staff, Branch.,PropertyForRent и PrivateOwner.
Способы схематического изображения типов сущностей:
Каждый тип сущности изображается в виде прямоугольника с именем сущности внутри него; в качестве имен]! обычно применяется существительное в единственном числе. В языке UML принято использовать прописные буквы в начале каждого слова, составляющего имя сущности (например. Staff и PropertyForRent). На рис. 11.2 показан пример схематического изображения типов сущностей Staff и Branch.
Типы связей
Тип связи-Набор осмысленных ассоциаций между сущностями разных типов.
Тип связи (relationship type) является набором ассоциаций между одним (или несколькими) типами сущностей, участвующими в этой связи. Каждому типу связи присваивается имя, которое должно описывать его назначение. В качестве примера типа связи можно указать связь POwns (Владеет недвижимостью) между сущностями PrivateOwner (Владелец недвижимости) и Proper tyForRent(Объект недвижимости), которая показана на рис. 11.1.Как и при использовании понятий сущности и типа сущности, необходимо различать понятия "экземпляр связи" и "тип связи".
Экземпляр связи -Однозначно идентифицируемая ассоциация, которая включает по одному экземпляру сущности из каждого участвующего в связи типа сущности. Экземпляр связи обозначает все конкретные экземпляры сущности, участвующие в этой связи. В данной книге широко применяются термины тип связи и экземпляр связи, но, как и в случае термина сущность, вместо них применяется более общий термин связь, если это не приводит к неоднозначности.
Схематическое изображение типов связей
Каждый тип связи изображается в виде линии, соединяющей соответствующие типы сущностей и обозначенные именем этой связи. Обычно для обозначения имени связи принято использовать глагол (например, Supervises(Контролирует) или Manages (Управляет)) или короткую фразу, содержащую глагол (например, LeasedBy (Взят в аренду)). И в этом случае первая буква каждого слова в имени связи являигся прописной. По возможности в каждой конкретной ER-модели все имена связей должны быть уникальными.На схеме должно быть показано направление действия каждой связи, поскольку обычно имеет смысл только одно направление этой связи (например,связь Branch Has Staff (Отделение имеет персонал) имеет больше смысла, чем Staff Has Branch (Персонал имеет отделение)). Поэтому после выбора имени связи рядом с этим именем на схеме размещается стрелка, которая показывает направление ее действия, чтобы читатель мог правильно интерпретировать имя связи (например. Branch Has > Staff), как показано на рис. 11.4.
Степень типа связи
Сущности, охваченные некоторой связью, называются участниками этой связи. Количество участников связи определенного типа называется степенью(degree) этой связи. Следовательно, степень связи указывает количество типов сущностей, охваченных данной связью. Связь со степенью два называется двухсторонней (binary). Примером двухсторонней свяэи является связь Has, показанная на рис, 11.4, в которой участвуют сущности двух типов, а именно Staff и Branch. Вторым примером двухсторонней связи является показанная на рис. 11.5 связь POwns с двумя участвующими типами сущностей —PrivateOwner и PropertyForRene. Эта связь также показана на рис. 11.1. На этом рисунке можно увидеть не только связи Has и POwna, но и другие примеры двухсторонних связей. Как показывает этот рисунок, на практике чаще всего встречаются связи со степенью два, т.е. двухсторонние связи. Связь со степенью три называется трехсторонней (ternary). Примером трехсторонней связи является связь Registers (Регистрирует) с тремя участвующими типами сущностей, а именно Staff, Branch и Client. Эта связь представляет процесс регистрации клиента представителем персонала отделения. Для описания связей со степенью больше двух принято применять термин сложная связь.
Схематическое изображение сложных связей
В системе обозначений UML для обозначения связей со степенями больше двух применяются ромбы. Имя связи записывается внутри ромба, и в этом случае направленная стрелка, которая обычно применяется вместе с именем, не предусмотрена.
Рекурсивная связь:
Рекурсивная связь. Связь, в которой одни и те же сущности участвуют несколько, раз в разных ролях.
Атрибуты:
Отдельные свойства сущностей называются атрибутами. Например, сущность staff (Персонал) может быть описана с помощью атрибутов staffNo (Табельный номер работника), name (Имя), position (Должность) и salary (Зарплата). Атрибуты содержат значения, которые описывают каждый экземпляр сущности и составляют основную часть информации, сохраняемой в базе данных. СВЯУЬ, которая соединяет, две сущности, также может иметь атрибуты, аналогичные атрибутам типа сущности.
Домен атрибута-Набор допустимых значений одного или нескольких атрибутов.
Каждый атрибут связан с набором значений, который называется доменом.Домен определяет все потенциальные значения, которые могут быть присвоены атрибуту; представленное здесь понятие домена аналогично понятию, рассматриваемому в реляционной модели. Как показано ниже, атрибуты подразделяются на простые и составные, однозначные и многозначные, а также производные.
Простой атрибут- Атрибут, состоящий из одного компонента с независимым существованием.
Простые атрибуты не могут быть разделены на более мелкие компоненты. Примером простых атрибутов является атрибут position (Должность) или salary(Зарплата) сущности Staff. Простые атрибуты иногда называют элементарными.
Составной атрибут* Атрибут, состоящий из нескольких компонентов, каждый из которых характеризуется независимым существованием.
Некоторые атрибуты могут быть разделены на более мелкие компоненты, которые характеризуются независимым существованием.
Однозначный и многозначный атрибуты
Однозначный атрибут- Атрибут, который содержит одно значение для каждого экземпляра сущности определенного типа.
Многозначный атрибут-Атрибут, который содержит несколько значений для каждого экземпляра сущности определенного типа.
Производный атрибут-Атрибут, который представляет значение, производное от значения связанного с ним атрибута или некоторого множества атрибутов,принадлежащих некоторому (не обязательно данному) типу сущности.
Некоторые атрибуты могут быть связаны с определенной сущностью.
Производные атрибуты могут также создаваться в форме ассоциаций атрибутов сущностей различных типов.
Ключи
Потенциальный ключ- Атрибут или минимальный набор атрибутов, который однозначно идентифицирует каждый экземпляр типа сущности.
Потенциальный ключ — это один или несколько атрибутов, значения которых однозначно идентифицируют каждый экземпляр сущности данного типа. Потенциальный ключ должен содержать значения, которые уникальны для каждого отдельного экземпляра сущности данного типа. Это означает, что потенциальный ключ не может содержать значения NULL. В частности, каждое отделение компании имеет уникальный номер (например, ' ВООЗ '), и не существует отделений с одинаковыми номерами.
Первичный ключ-Потенциальный ключ, который выбран для однозначной идентификации каждого экземпляра сущности определенного типа.
В некоторых случаях ключ сущности состоит из нескольких атрибутов, значения которых, взятые вместе, а не по отдельности, уникальны для каждого экземпляра сущности.
Схематическое представление атрибутов
Если сущность определенного типа должна отображаться на схеме вместе со своими атрибутами, то прямоугольник, представляющий эту сущность, делится на две части. В верхней части прямоугольника отображается имя сущности, а в нижней — список имен атрибутов.
Первым атрибутом (атрибутами) в списке должен быть первичный ключ для сущности данного типа, если он известен. Имя (имена) атрибута (атрибутов) первичного ключа должно быть обозначено дескриптором {РК} (сокращение от primary key). В языке UML принято присваивать атрибуту имя, которое начинается со строчной буквы, а если оно состоит из нескольких слов, то первая буква каждого следующего слова пишется с прописной буквы (например, address и telNo), Кроме того, на схемах могут применяться дополнительные дескрипторы,в том числе дескриптор с обозначением компонента первичного ключа {РРК}(сокращение от partial primary key), если атрибут образует часть составного первичного ключа, и дескриптор с обозначением альтернативного ключа {АК}(сокращение от alternate key). Как показано на рис. 11.10, первичным ключом сущности типа Staff является атрибут staffNo, а первичным ключом сущности типа Branch — атрибут branchNo.
Сущности сильного и слабого типов
Сущность сильного типа-Тип сущности, существование которого не зависит от какого-то иного типа сущности.
Тип сущности называется сильным, если его существование не зависит от наличия сущностей другого типа.
Сущность слабого типа-Тип сущности/существование которого зависит от какого-то другого типа сущности.
Сущность слабого типа зависит от наличия сущности другого типа.
Сущности слабого типа иногда называют дочерними, зависимыми или подчиненными, а сущности сильного типа — родительскими, сущностями владельцами или доминантными.
Атрибуты связей
Рассмотрим в качестве примера связь Advertises между сущностями Newspaper и PropertyForRent, которая показана на рис. 11.1.
Допустим, что нужно зафиксировать в базе данных дату публикации рекламы арендуемой недвижимости и стоимость аренды, указанную в этой рекламе. Для этого лучше всего ассоциировать такую информацию со связью Advertises с помощью атрибутов dateAdvert и cost, а не вводить эти атрибуты в состав определений сущностей Newspaper или PropertyForRent.
Схематическое представление атрибутов связей:
• Для отображения атрибутов, относящихся к типу связи, применяется такое же условное обозначение, как и для типа сущности. Тем не менее, чтобы подчеркнуть различие между сущностью и связью, обладающей атрибутом, линия,которая соединяет прямоугольник с именем атрибута (атрибутов) и саму связь,отображается как штриховая. Если на схеме появляется связь с одним или несколькими атрибутами, это может свидетельствовать о том, что за этой связью скрывается невыявленный тип сущности.
Структурные ограничения
Рассмотрим теперь ограничения, которые могут накладываться на сущности,участвующие в связях. По сути, они являются отражением определенных требований реального мира. Примерами таких ограничений являются требования,чтобы объект недвижимости имел владельца и в каждом отделении компании был некоторый персонал. Основным типом ограничения, накладываемого на связь, является кратность.
Кратность-Количество (заданное как одно значение или как диапазон значений),возможных экземпляров сущности некоторого типа, которые могут быть связаны с одним экземпляром сущности другого типа с помощью определенной связи. Ограничения кратности описывают способ формирования связи между сущностями. Они отражают требования (или бизнес-правила), установленные пользователем или предприятием. Одной из важных частей моделирования предприятия является обеспечение того, чтобы в модели были выявлены и представлены все соответствующие ограничения предметной области. Важно отметить, что не все ограничения предметной области могут быть легко представлены в виде ER-модели.
Как указано выше, наиболее распространенной степенью связи является двухсторонняя. Двухсторонние связи обычно обозначаются как связи "один к одному"(1:1), "один ко многим" (1:*) или "многие ко многим" (*:*), Рассмотрим связи этих трех типов с использованием следующих ограничений предметной области:
• один представитель персонала управляет отделением (1:1);
• представитель персонала управляет несколькими объектами недвижимости,сдаваемыми в аренду (1:*);
• газеты публикуют рекламные объявления о сдаче объектов недвижимости в аренду (*:*)
Ограничения кардинальности и степени участия
Ограничения кратности фактически состоят из двух отдельных ограничений,известных как кардинальность и степень участия.
Кардинальность. Определяет максимальное количество возможных экземпляров связи для каждой сущности, участвующей в связи конкретного типа.
Степень участия. Определяет, участвуют ли в связи все или только некоторые экземпляры сущности.
Ограничение степени участия определяет, должны ли участвовать в конкретной связи все экземпляры сущности (такое условие принято называть обязательным участием) или только некоторые экземпляры (такое условие называется необязательным участием).
Проблемы ER моделирования
В этом разделе рассматриваются некоторые проблемы, которые могут иметь место при разработке концептуальной модели данных. Эти проблемы, которые принято называть дефектами соединения (connection trap), обычно возникают вследствие неправильной интерпретации смысла некоторых связей . Мы рассмотрим два основных типа дефектов соединения: дефект типа "разветвление" (fan trap) и дефект типа "разрыв" (chasm trap), а также укажем способы выявления и устранения этих проблем в создаваемых ER-моделях.
Дефекты типа “разветвление”
Дефект типа "разветвление". Имеет место в том случае, когда модель отображает связь между типами сущностей, но путь между отдельными сущностями этого типа определен неоднозначно.
Дефект типа "разветвление" возникает в том случае, когда две или несколько связей типа 1:* исходят из одной сущности.
Дефекты типа "разрыв"
Дефект типа "разрыв". Появляется в том случае, когда в модели предполагается наличие связи между типами сущностей, но не существует пути между от дельными сущностями этих типов.
Дефект типа "разрыв" может возникать, если существует одна или несколько связей с минимальной кратностью, равной нулю (которая обозначает необязательное участие), и эти связи составляют часть пути между взаимосвязанными сущностями.