Свойства связей

Классификация связей

V. На языке модели "сущность – связь"связь - ассоциирование двух или более сущностей, при котором каждый экземпляр одной сущности ассоциирован с произвольным (в том числе и нулевым) количеством экземпляров другой сущности. Связь – это то, что объединяет несколько сущностей.

Если бы назначением БД было только хранение отдельных, не связанных между собой данных, то ее структура могла бы быть очень простой. Однако одно из основных требований к организации БД - это обеспечение возможности отыскания одних сущностей по значениям других, для чего необходимо установить между ними определенные связи. А так как в реальных БД нередко содержатся сотни или даже тысячи сущностей, то теоретически между ними может быть установлено более миллиона связей. Наличие такого множества связей и определяет сложность инфологических моделей.

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

Степень связи (или кардинальность) определяется количеством участников связи:

- Связь со степенью 2 называется бинарной.

 

 

- Связь со степенью 3 называется тернарной.

 

 

- Связь со степенью 4 называется кватернарной.

 

 

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

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

1. Если каждый экземпляр сущности участвует, по крайней мере, в одном экземпляре связи, то такое участие этой сущности называется полным (или обязательным), в противном случае – неполным (или необязательным, частичным). Например, связь между сущностями СОТРУДНИК и ИНОСТРАННЫЙ ЯЗЫК. Некоторые СОТРУДНИКИ знают ИНОСТРАННЫЙ ЯЗЫК, но ни один из них не владеет более, чем одним ИНОСТРАННЫМ ЯЗЫКОМ. Есть некоторые СОТРУДНИКИ, которые не владеют ни одним ИНОСТРАННЫМ ЯЗЫКОМ. Естественно, что имеется много ИНОСТРАННЫХ ЯЗЫКОВ, которыми не владеет ни один из СОТРУДНИКОВ, а также, что некоторые из СОТРУДНИКОВ владеют одним и тем же ИНОСТРАННЫМ ЯЗЫКОМ. В данном случае участие обеих сущностей в связи является неполным.

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

Количественный характер участия экземпляров сущностей (один или многие) задается типом связи (или мощностью связи). Тип связи есть агрегат двух или более типов сущностей. Возможны следующие типы бинарных связей:

- «один – к – одному» (1:1) (one-to-one relationship);

- «один – ко – многим» (1:N) (one-to-many relationship);

- «многие – к – одному» (N:1) (many-to-one relationship);

- «многие – ко – многим» (N:N) (many – to – many relationship).

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

Следующий классический пример отношения "один - к – одному" - это реализация подтипа данных. Допустим, вы делаете БД для магазина, торгующего автомобилями. У вас будет сущность с общими характеристиками автомобиля, например: цвет, стоимость, дата выпуска и тип (иномарка или отечественная). При описании реального проекта характеристик будет значительно больше. А теперь представьте, что поскольку машины могут быть отечественного производства и иномарки, то у машин отечественного производства есть свои параметры, которых нет у иномарок, например, гарантия завода изготовителя. В то же время и у иномарок есть свои параметры, которых нет у отечественных машин, например, из какой страны импортирована, пошлина, размещение руля (слева или справа). Здесь приходит на выручку отношение "один - к – одному", т.е. мы реализуем своего рода подтипы (см. рис. 1.).

На рис. 7.1 любой записи в таблице Автомобили в зависимости от значения поля тип соответствует запись либо в таблице Иномарки, либо в таблице Отечественные.

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

Или, например, если есть 2 сущности "Студент" и "Преподаватель" и связь между ними – руководство дипломными проектами, то каждый студент имеет только одного руководителя, но один и тот же преподаватель может руководить несколькими студентами-дипломниками (рис. 7.2).

 

 
 
рис. 7.1. Схема связи «один-к-одному».

 

 


 

рис. 7.2. Схема связи «один-ко-многим».

 

Связь "многие - к - одному" симметрична связи "один - ко - многим". Эти связи различаются только в том случае, когда учитывается их направление и одна из сущностей считается главной, а вторая подчиненной.

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

Другим примером связи "многие – ко - многим" является следующий: имеются две таблицы: СТУДЕНТ и ПРЕПОДАВАТЕЛЬ и между ними установлена связь - лекции (рис. 7.3).Один студент слушает лекции разных преподавателей, а преподаватель читает лекции многим студентам.

 

 

рис. 7.3. Схема связи «многие-ко-многим».

 

Для реализации такой связи введем дополнительную сущность ЛЕКЦИИ
(рис. 7.4).

 

 

рис. 7.4. Реализация связи «многие-ко-многим» в реляционной модели данных.

Инструмент связей – это средство представления сложных объектов, каждый из которых может рассматриваться как множество взаимосвязанных простых объектов. Деление на простые и сложные объекты, также как и характер взаимосвязи, является условным и определяется особенностями анализа предметной области, т. е. характером использования данных о предметах в решаемых прикладных задачах. При этом с точки зрения, например, конструктора, ДЕТАЛЬ является сложным объектом, а с точки зрения ПОСТАВЩИКА – простым.