ЕR – модель Генерация отношений
Диаграммы "сущность-связь" (Entity-Relationship) предназначены для разработки моделей данных и обеспечивают стандартный способ определения данных и отношений между ними. Фактически с помощью ERD осуществляется детализация хранилищ данных проектируемой системы, а также документируются сущности системы и способы их взаимодействия, включая идентификацию объектов, важных для предметной области (сущностей), свойств этих объектов (атрибутов) и их отношений с другими объектами (связей).
Первый вариант модели сущность-связь был предложен в 1976 г. Питером Пин-Шэн Ченом. В дальнейшем многими авторами были разработаны свои варианты подобных моделей (нотация Мартина, нотация IDEF1X, нотация Баркера и др.). По сути, все варианты диаграмм сущность-связь исходят из одной идеи - рисунок всегда нагляднее текстового описания. Все такие диаграммы используют графическое изображение сущностей предметной области, их свойств (атрибутов), и взаимосвязей между сущностями.
ER-диаграммамы с позиции нотации Чена.
Основные понятия ER-диаграмм:
Сущность - это класс однотипных объектов, информация о которых должна быть учтена в модели. Каждая сущность должна иметь наименование, выраженное существительным в единственном числе. Каждая сущность в модели изображается в виде прямоугольника с наименованием.
Экземпляр сущности - это конкретный представитель данной сущности. Например, представителем сущности "Игрок" может быть "Игрок Иванов". Экземпляры сущностей должны быть различимы, т.е. сущности должны иметь некоторые свойства, уникальные для каждого экземпляра этой сущности.
Атрибут сущности - это именованная характеристика, являющаяся некоторым свойством сущности. Наименование атрибута должно быть выражено существительным в единственном числе (возможно, с характеризующими прилагательными).
Ключ сущности - это неизбыточный набор атрибутов, значения которых в совокупности являются уникальными для каждого экземпляра сущности. Неизбыточность заключается в том, что удалением любого атрибута из ключа нарушается его уникальность.
Сущность может иметь несколько различных ключей. Ключевые атрибуты изображаются на диаграмме подчеркиванием.
Связь - это некоторая ассоциация между двумя сущностями. Одна сущность может быть связана с другой сущностью или сама с собою. Связи позволяют по одной сущности находить другие сущности, связанные с нею. Графически связь изображается линией, соединяющей две сущности. Каждая связь имеет два конца и одно или два наименования. Наименование обычно выражается в неопределенной глагольной форме: "иметь", "принадлежать" и т.п. Каждое из наименований относится к своему концу связи. Иногда наименования не пишутся ввиду их очевидности.
Каждая связь может иметь один из следующих типов связи:
Связь типа один-к-одному
означает, что один экземпляр первой сущности (левой) связан с одним экземпляром второй сущности (правой). Связь один-к-одному чаще всего свидетельствует о том, что на самом деле мы имеем всего одну сущность, неправильно разделенную на две.
Связь типа один-ко-многим
означает, что один экземпляр первой сущности (левой) связан с несколькими экземплярами второй сущности (правой). Это наиболее часто используемый тип связи. Левая сущность (со стороны "один") называется родительской, правая (со стороны "много") - дочерней.
Связь типа много-ко-многим
означает, что каждый экземпляр первой сущности может быть связан с несколькими экземплярами второй сущности, и каждый экземпляр второй сущности может быть связан с несколькими экземплярами первой сущности. Тип связи много-ко-многим является временным типом связи, допустимым на ранних этапах разработки модели. В дальнейшем этот тип связи должен быть заменен двумя связями типа один-ко-многим путем создания промежуточной сущности.
Каждая связь может иметь одну из двух модальностей связи:
·
Модальность "может" означает, что экземпляр одной сущности может быть связан с одним или несколькими экземплярами другой сущности, а может быть и не связан ни с одним экземпляром.
· Модальность "должен" означает, что экземпляр одной сущности обязан быть связан не менее чем с одним экземпляром другой сущности.
Связь может иметь разную модальность с разных концов.
Объекты рассматриваемой нотации отображаются следующим образом:
Название объекта |
Отображение |
Сущность |
|
Сущность с обязательным классом принадлежности |
|
Сущность с необязательным классом принадлежности |
|
Связь |
|
Связь со свободным атрибутом (или атрибутом связи) |
|
Степень связи |
1:1 (“один к одному”) 1:n (n:1) (“один ко многим”) n:m (“многие ко многим”) |
Свободный атрибут |
отображается в овале |
Связь вида супертип/подтип |
|
R(препод-дисципина) = {Таб. №,
ФИО, название дисциплины}
Правило 2: При степени связи 1:1 и необязательном классе принадлежности одной из сущностей формируется 2 отношения по одному на каждую сущность, при этом в отношении соответствующее сущности с обязательным классом принадлежности в качестве обязательного атрибута входит ключ сущности с необязательным классом принадлежности. Ключом вновь сформированного отношения может быть ключ любой из сущности.
R(препод) = {таб №, ФИО, разряд, название дисциплины}
R(дисциплина) = {название дисциплины, вид контроля}
Правило 3: при степени связи 1:1 и необязательном классе принадлежности обеих сущностей формируется три отношения по одному на каждую сущность + отношение связи. В отношение связи в качестве обязательных атрибутов входят ключи обеих сущностей. Ключом связи может быть любой из ключей.
Правило 4: при степени связи 1:n и обязательном классе принадлежности n-связной сущности формируется 2 отношения, при этом в отношение соответствующее n-связной сущности в качестве обязательного атрибута войдет ключ односвязной сущности.
Ключом этого отношения будет ключ n-связной сущности.
R(препод) = {таб №, ФИО, разряд, название дисциплины}
R(дисциплина) = {название дисциплины, вид контроля}
Обоснуем данное правило:
Правило 5: при степени связи 1:n и необязательном классе принадлежности n-связной сущности формируется 3 отношения по одному на каждую сущность + отношение связи, куда в качестве обязательного атрибута входят ключи обеих сущностей, ключом отношения будет ключ n-связной сущности.
R(препод) ={таб №, фио, разряд}
R(дисципина) = {название дисциплины, вид отчетности}
R(читать) = {таб №, название дисциплины}
Обоснуем данное правило:
Следуя правилу у нас получилось 2 отношения с одинаковым ключом, но в данном случае объединение данных отношений будет не верно, так как модальность связи в данном отношении “может”, а следовательно при объединении отношений получиться что какому то атрибуту отношения может не соответствовать значение, а следовательно будут присутствовать NULL поля. Чтобы избежать NULL полей и вводится 3 связь, которая позволяет избежать неопределенности.
Правило 6: при степени связи m:n независимо от класса принадлежности обеих сущностей формируется 3 отношения по одному на каждую сущность + отношение связи, куда в качестве обязательных атрибутов входят ключи обеих сущностей, ключом данного отношения будут ключи обеих сущностей.
R(препод) = {таб №, фио, разряд}
R(дисциплина) = {название дисциплины, вид отчетности}
R(читать) = {таб №, название дисциплины}