Второй тип – связь ОДИН-КО-МНОГИМ (1:М): одному представителю сущности А соответствуют 0, 1 или несколько
представителей сущности В. |
|
|
|
|
|
|
||||||
|
|
|
1 |
|
|
М |
|
|
|
|
|
|
|
|
А |
|
|
|
|
|
В |
|
|||
|
|
|
|
|
|
АВ |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Пример: |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
Назна- |
|
|
|
|
|
|
|
Квартира |
|
1 |
|
|
|
|
М |
Жилец |
|
|
|
|
|
|
|
|
|
чение |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Квартира может пустовать, в ней может жить один или несколько жильцов.
Так как между двумя сущностями возможны связи в обоих направлениях, то существует еще два типа связи МНОГИЕ-К-ОДНОМУ (М:1) и МНОГИЕ-КО-МНОГИМ (М:N).
Пример: Если связь между сущностями МУЖЧИНЫ и ЖЕНЩИНЫ называется БРАК, то существует четыре возможных представления такой связи:
1. Традиционный брак
Мужчины |
1 |
Брак |
1 |
Женщины |
|
|
|
|
|
|
|
|
1 |
|
2. |
Многоженство |
|
||
|
|
1 |
|
|
Мужчины |
Брак |
|||
|
||||
|
|
|
|
|
|
|
|
|
|
3. |
Многомужие |
|
||
|
|
М |
|
|
Мужчины |
Брак |
|||
|
||||
|
|
|
|
|
|
|
|
|
|
4. |
Групповой брак |
|
||
|
|
М |
|
|
Мужчины |
Брак |
|||
|
||||
|
|
|
|
|
|
|
|
|
|
М
1 Женщины
1
1 Женщины
М
Женщины
21
Характер связей между сущностями не ограничивается перечисленными. Существуют и более сложные связи.
Пример:
Множество связей между одними и теми же сущностями
Лечащий
врач
1 |
М |
Врач
N
Пациент
Консуль- |
T |
тант |
|
(пациент, имея одного лечащего врача, может иметь также несколько врачей-консультантов; врач может быть лечащим врачом нескольких пациентов и может одновременно консультировать несколько других пациентов);
Тренарные связи
|
М |
|
|
||
Врач |
|
Назнач |
|
|
енный |
|
|
|
|
|
анализ |
|
|
|
М
1 Анализы
P
Пациент
Если экземпляры данной сущности должны участвовать в связи, то участие называется обязательным, в противном случае – необязательным. В первом случае этот факт отмечается маленьким черным кружком, помещенным в блок, смежный с блоком сущности, во втором случае кружок помещают вне блока.
22
Пример:
а)
1 |
1 |
Автор |
1 Пишет |
б)
1 |
|
1 |
Автор |
Пишет |
1 |
в)
1 |
|
1 |
Автор |
Пишет |
1 |
г)
1 |
|
1 |
Автор |
Пишет |
1 |
Книгу 1
Книгу
Книгу
Книгу
а) каждый автор пишет не более одной книги, и каждая книга пишется не более, чем одним автором
б) каждый автор пишет одну и только одну книгу, и каждая книга пишется не более, чем одним автором
в) каждый автор пишет не более одной книги, но каждая книга пишется одним и только одним автором.
г) каждый автор пишет одну и только одну книгу, и каждая книга пишется одним и только одним автором.
Аналогичные схемы можно привести в случае связей один ко многим, многие к одному и многие ко многим.
При разработке концептуальной модели данных могут иметь место проблемы ER-моделирования. Эти проблемы
23
принято называть ловушками соединения (разветвления или разрыва).
Ключи
Под ключом подразумевается элемент данных, который позволяет уникально идентифицировать отдельные экземпляры некоторого типа сущности.
ПОТЕНЦИАЛЬНЫЙ КЛЮЧ – это атрибут или набор атрибутов, который уникально идентифицирует каждый экземпляр сущности данного типа
Потенциальный ключ должен содержать значения, которые уникальны для каждого отдельного экземпляра сущности данного типа.
ПЕРВИЧНЫЙ КЛЮЧ – это потенциальный ключ, который выбран в качестве первичного ключа.
Сущность может иметь несколько потенциальных ключей. Выбор первичного ключа сущности осуществляется исходя из соображений суммарной длины атрибутов, минимального количества атрибутов в ключе, а также наличия гарантий уникальности его значений в текущий момент времени и обозримом будущем.
СОСТАВНОЙ КЛЮЧ – это потенциальный ключ, который состоит из двух или более атрибутов
Внешние ключи.
Если сущность С связывает сущности А и В, то она должна включать внешние ключи, соответствующие первичным ключам сущностей А и В.
Если сущность В обозначает сущность А, то она должна включать внешний ключ, соответствующий первичному ключу сущности А.
При рассмотрении проблемы выбора способа представления ассоциаций и обозначений в базе данных основной вопрос, на который следует получить ответ: "Каковы внешние ключи?". И далее, для каждого внешнего ключа необходимо решить три вопроса:
24
1.Может ли данный внешний ключ принимать неопределенные значения (NULL-значения)? Иначе говоря, может ли существовать некоторый экземпляр сущности данного типа, для которого неизвестна целевая сущность, указываемая внешним ключом? В случае поставок это, вероятно, невозможно – поставка, осуществляемая неизвестным поставщиком, или поставка неизвестного продукта не имеют смысла. Но в случае с сотрудниками такая ситуация, однако могла бы иметь смысл – вполне возможно, что какой-либо сотрудник в данный момент не зачислен вообще ни в какой отдел. Заметим, что ответ на данный вопрос не зависит от прихоти проектировщика базы данных, а определяется фактическим образом действий, принятым в той части реального мира, которая должна быть представлена в рассматриваемой базе данных. Подобные замечания имеют отношение и к вопросам, обсуждаемым ниже.
2.Что должно случиться при попытке УДАЛЕНИЯ целевой сущности, на которую ссылается внешний ключ? Например, при удалении поставщика, который осуществил по крайней мере одну поставку. Существует три возможности:
КАСКАДИРУЕТСЯ – операция удаления «каскадируется» с тем, чтобы удалить также поставки этого поставщика.
ОГРАНИЧИВАЕТСЯ– удаляются лишь те поставщики, которые еще не осуществляли поставок. Иначе операция удаления отвергается.
УСТАНАВЛИВАЕТСЯ – для всех поставок удаляемого поставщика NULL-значение внешний ключ устанавливается в неопределенное значение, а затем этот поставщик удаляется. Такая возможность, конечно, неприменима, если данный внешний ключ не должен содержать NULL-значений.
3.Что должно происходить при попытке ОБНОВЛЕНИЯ первичного ключа целевой сущности, на которую ссылается некоторый внешний ключ? Например, может быть предпринята попытка обновить номер такого поставщика, для которого
25