Таблица 2.4. Значения RI, присваиваемые в ERwin no умолчанию, а также возможные оежимы для каждого типа связи
|
Идентифицирующая связь |
Неидентифицирующая связь (Nulls Allowed) |
Неидентифицирующая связь (No Nulls) |
Категориальная связь |
|
|
|
|
|
Child Delete Возможные режимы |
RESTRICT, CASCADE, NONE |
RESTRICT, CASCADE, NONE, SET NULL, SET DEFAULT |
RESTRICT, CASCADE, NONE, SET DEFAULT |
RESTRICT, CASCADE, |
|
|
|
|
NONE |
Child Delete Режимы по умолчанию |
NONE |
NONE |
NONE |
NONE |
Child Insert Возможные режимы |
RESTRICT, CASCADE, |
RESTRICT, CASCADE, NONE, SET NULL,SET DEFAULT |
RESTRICT, CASCADE, NONE, SET DEFAULT |
RESTRICT, CASCADE, |
|
NONE |
|
|
NONE |
Child Insert Режимы по умолчанию |
RESTRICT |
SET NULL |
RESTRICT |
RESTRICT |
Child Update Возможные режимы |
RESTRICT, CASCADE, NONE |
RESTRICT, CASCADE, NONE, SET NULL,SET DEFAULT |
RESTRICT, CASCADE, NONE, SET DEFAULT |
RESTRICT, CASCADE, NONE |
Child Update Режимы по умолчанию |
RESTRICT |
SET NULL |
RESTRICT |
RESTRICT |
Parent Delete Возможные режимы |
RESTRICT, CASCADE, NONE |
RESTRICT, CASCADE, NONE, SET NULL,SET DEFAULT |
RESTRICT, CASCADE, NONE, SET DEFAULT |
RESTRICT, CASCADE, |
|
|
|
|
NONE |
Parent Delete Режимы по умолчанию |
RESTRICT |
SET NULL |
RESTRICT |
CASCADE |
Parent Insert Возможные режимы |
RESTRICT, CASCADE, NONE |
RESTRICT, CASCADE, NONE, SET NULL,SET DEFAULT |
RESTRICT, CASCADE, NONE, SET DEFAULT |
RESTRICT, CASCADE, NONE |
Parent Insert Режимы по умолчанию |
NONE |
NONE |
NONE |
NONE |
Parent Update Возможные режимы |
RESTRICT, CASCADE, NONE |
RESTRICT, CASCADE, NONE, SET NULL,SET DEFAULT |
RESTRICT, CASCADE, NONE, SET DEFAULT |
RESTRICT, CASCADE, NONE |
Parent Update Режимы по умолчанию |
RESTRICT |
SET NULL |
RESTRICT |
CASCADE |
Связь многие-ко-многимвозможна только на уровне логической модели данных. На рис. 2.31 вверху показан пример связи многие-ко-многим. Врач может принимать много пациентов, пациент может лечиться у нескольких врачей. Такая связь обозначается сплошной линией с двумя точками на концах.

Рис. 2.31. Связь многие-ко-многим
Для внесения связи следует установить курсор на кнопке
в палитре инструментов, щелкнуть сначала по одной, а затем по другой сущности.
Связь многие-ко-многим должна именоваться двумя фразами - в обе стороны (в примере "принимает/лечится"). Это облегчает чтение диаграммы. Связь на рис. 2.31 следует читать Вран <���принимает> Пациент"а , Пациент <���лечится> у Врач"а .
При переходе к физическому уровню ERwin автоматически преобразует связь многие-ко-многим, добавляя новую таблицу и устанавливая две новые связи один-ко-многим от старых к новой таблице (рис. 2.32, сверху). При 'этом имя новой таблице присваивается автоматически как “Имя1 Имя2".

Рис. 2.32. Иллюстрация автоматического разрешения связи многие-ко-многим на уровне физической модели
Автоматического решения проблемы связи многие-ко-многим не всегда оказывается достаточно. В примере таблица Doctor_Patient имеет смысл визита к врачу, поэтому ее следует переименовать согласно бизнес-логике в Visit. Один и тот же пациент может много раз посещать врача, поэтому для того, чтобы идентифицировать визит, необходимо в состав первичного ключа таблицы Visit добавить дополнительную колонку, например дату-время посещения (VisitDatetime, рис. 2.33).

Рис. 2.33. Дополнение модели при разрешении связи многие-ко-многим на уровне физической модели
Следует заметить, что после внесения дополнительной колонки на физическом уровне на логическом уровне представление модели не изменится, диаграмма будет выглядеть так, как на рис. 2.31.
2.2.4. Типы сущностей и иерархия наследования
Как было указано выше, связи определяют, является ли сущность независимой или зависимой. Различают несколько типов зависимых сущностей.
Характеристическая -зависимая дочерняя сущность, которая связана только с одной родительской и по смыслу хранит информацию о характеристиках родительской сущности.

Читать дальше