Отношения (связи) сущностей (Entity Relationships)
В модели данных программы ERwin отношения показывают связь между двумя сущностями или таблицами. В зависимости от нотации (см. Урок №2), которой вы пользуетесь, линия отношения или связи может быть сплошной или пунктирной и иметь символы на одном или двух концах.
|
На рисунке показано отношение между сущностью STORE и сущностью MOVIE в нотации IDEF1x.
Инструменты связей (Relationship Tools)
В зависимости от типа информационной модели (логический или физический) и нотации построения диаграмм инструменты связей на палитре ERwin Toolbox меняются.
Но, в основном, существует два типа связи:
· Идентифицирующая связь (Identifying Relationship) (связь, при которой внешний ключевой атрибут (колонка) перемещается выше линии в сущности или таблице, становясь частью первичного ключа дочерней сущности; отображается сплошной линией);
· Неидентифицирующая связь (Non-Identifying Relationship) (связь, при которой внешний ключевой атрибут (колонка) располагается ниже линии в сущности или таблице, становясь неключевым атрибутом дочерней сущности; отображается пунктирной линией).
|
|
|
|
Внимание! Пример показывает некоторые доступные инструменты связей в Логической и Физической модели в нотациях IDEF1x, IE, Dimensional (см. Урок №2).
Создание связей
Для создания связи необходимо:
1. Выбрать необходимый тип связи на палитре ERwin Toolbox.
2. Нажать на родительскую сущность или таблицу.
3. Нажать на дочернюю сущность.
Внимание! По умолчанию, программа ERwin присваивает новым связям названия R/1, R/2, R/3 и т.д. Но вы всегда можете переименовать связи. Названия связей, которые являются глагольными фразами, будут рассмотрены ниже.
Редактор связей (Relationship Editor)
Создав связь, вы можете двойным щелчком мыши по линии связи войти в редактор связей, для внесения изменений в данную связь. Вы можете редактировать многие из свойств связей, включая:
1. Изменение глагольных фраз родительской и дочерней сущности.
2. Определение связи.
3. Изменение функционального имени (Rolename) (функциональные имена полезны при нахождении отличий между перемещенными ключами, имеющими такие же названия, как и существующие атрибуты; при неиспользовании функциональных имен атрибуты унифицируются, и создается единственная колонка в текущей базе данных).
4. Изменение целостности данных (Referential Integrity) (опции целостности данных могут применяться для любой связи, они обеспечивают вставку, обновление или удаление информации в базе данных). Рассмотрим следующие виды целостности:
- Ограничивающая (Restrict) – предотвращает удаление, внесение или обновление информации в родительскую или дочернюю сущность, если имеется одна или более связанных с ней сущности.
- Каскадная (Cascade) – при удалении, добавлении или обновлении информации в родительскую сущность, аналогичные изменения происходят и в дочерней сущности.
- Установка сброса (Set NULL) – при удалении, добавлении или обновлении информации в родительской сущности связанные с ней внешние ключевые атрибуты или колонки дочерней сущности аннулируются.
- Установка стандарта (Set default) – при удалении, добавлении или обновлении информации в родительской сущности связанные с ней внешние ключевые атрибуты или колонки дочерней сущности принимают стандартное значение.
- Отсутствующая (None) – нет целостности данных.
5. Тип связей (Cardinality) (представляет собой отношение числа объектов родительской сущности, связанных с объектами дочерней сущности, к числу этих объектов)
Вы можете менять тип отношений:
- 0, 1 или более
- 1 или более
- 0 или 1
- диапазон от n до m.
|
Внимание! Для отображения некоторых свойств связей в окне диаграмм выберите нужный пункт из меню Format/Relationship Display. Подробнее это будет рассмотрено в следующем уроке.
Что такое глагольная фраза (Verb Phrase)?
Глагольная фраза описывает, как связаны сущности. В ERwin можно создавать два типа глагольных фраз:
· Глагольная фраза типа «От родительской сущности к дочерней» (Parent-to-Child) описывает, как родительская сущность связана с дочерней. На примере ниже глагольная фраза “rents” («оплачивает») описывает связь “A STORE rents A MOVIE” («ОТДЕЛ оплачивает КИНОФИЛЬМ»).
· Глагольная фраза типа «От дочерней сущности к родительской» (Child-to-parent) описывает, как связана дочерняя сущность с родительской. На примере ниже глагольная фраза “is rented from” («оплачивается») описывает связь “A MOVIE is rented from A STORE” («КИНОФИЛМ оплачивается ОТДЕЛОМ»).
Внимание! Вы можете создавать глагольные фразы прямо в окне диаграмм.
Что такое внешний ключевой атрибут (Foreign Key)?
При связывании сущностей программа ERwin перемещает первичные ключи (ключевые атрибуты) родительской сущности в дочернюю сущность. Указатель FK показывает, что используется внешний ключевой атрибут с таким же именем, как и перемещенный ключ.
Внимание! По умолчанию, в физической модели отображаются все внешние ключи. В логической же модели можно включать или выключать видимость внешних ключей с помощью опции Show Migrated Keys and FK Designator в меню Format/Entity Display.
Что такое унификация (Unification)?
Если внешний ключ (внешний ключевой атрибут) имеет такое же имя, как и атрибут дочерней сущности, то программа ERwin автоматически объединяет два атрибута, т.к. принимает его за один и тот же атрибут. Процесс комбинирования или объединения идентичных атрибутов называется унификацией (unification).
|
Использование функциональных имен (Rolenames)
Иногда унификация не желательна. Например, когда вы хотите сохранить несколько атрибутов сущности с одинаковыми названиями, но имеющих разное предназначение. В такой ситуации вы можете воспользоваться функциональным именем (Rolename), которое является побочным для внешнего ключа. В примере ниже атрибуты customer.id и product.id в сущности ORDER представляют внешние ключи, которым присвоены функциональные имена.
|
Связи в окне Model Explorer
Если вы предпочитаете работать в окне Model Explorer, вы можете также можете видеть родительские и дочерние связи для каждой сущности и таблицы в Model Explorer. А при двойном нажатии на любую из папок связи программа ERwin откроет редактор связей Relationship Editor.
|
***