Полная атрибутивная модель FA (Fuller Attributer)
FA (Fuller Attributer) модель – это модель данных, которая полностью описывает все атрибуты сущности с указанием типов данных. Атрибуты могут однозначными (дата рождения человека) и многозначными (у человека может быть несколько телефонов).
Как создаются атрибуты в Erwinе
Надо щелкнуть правой клавишей по сущности и выбрать из всплывающего меню Attribute Editor (редактор атрибутов). Появиться окошко, в котором надо щелкнуть по кнопке New, и выбрать, если это на логическом уровне, тип данных. При этом на логическом уровне можно создавать 2 вида имён: имя, которое будет отображаться над таблицей может быть русскоязычным, и физическое имя, которое будут только на физической модели (только на латинице). Можно указать одно и тоже имя.
Создание альтернативных ключей и неуникальных индексов
Уникальные были созданы на KB модели. Как правило, альтернативные ключи – это ключи, которые создаются по другим полям или колонкам. (Формально в Erwinе их называют альтернативными, хотя они тоже называются потенциальными.) Один из потенциальных ключей Candidate Key выбирается в качестве ключа, в Erwinе их называют альтернативными и записываются символами AKNM, где N – номер альтернативного ключа, M – номер атрибута, входящего в ключ (ключи могут состоять из нескольких атрибутов). Приписываются эти надписи после имени (например: Size (AK1.1)). Чтобы эти данные отобразились на экране надо включить соответствующий слой: правой клавишей по полю проектирования, из всплывающего меню выбрать опцию Entity Display, потом Alternate Key или Case Designator.
Создание инвертированных индексов, неуникальных
На практике бывает необходимость создать индекс по какому-то полю, которое в принципе не может быть уникальным. (например: дата рождения сотрудников). В таблице они отображаются надписью IENM (N,M по тому же принципы, что и для альтернативных ключей). Создаются инвертированные ключи точно также как и альтернативные, за тем лишь исключением, что при создании надо сделать дополнительную пометку Inversion Entry (none unique).
Как в принципе создаются ключи
На логической модели надо щелкнуть по таблице, из всплывающего меню выбрать Key Grow Editor, потом нажить клавишу New и выбрать Alternate Key (уникальный) или Inversion Entry (если нужен неуникальный).
Связи и атрибуты внешнего ключа
Когда в Erwinе 2 таблицы соединяются связью один–ко–многим, то PK из родительской таблицы мигрирует в дочернюю и является там FK. (в главной таблице он уникальный, а в подчинённом могут быть по нему дубли).
Если связь идентифицирующая, то ключ мигрирует в область первичных ключей (верхний рисунок), если неинентифицирующая, то в неключевую область (нижний рисунок).
(При этом никто не запрещает для дочерней таблицы определить свой PK).
Зависимость существования
Сущность называется зависимо существующей или Extence Depend, если она не может существовать без родительской (работник может иметь иждивенца, сущность иждивенец не может существовать без сущности работник).
Зависимую сущность называют идентификационно зависимой, когда зависимая сущность не может быть идентифицирована без ключа родителя (существовать может и так).
Идентифицируемая и неидентифицируемая связь
В модели IDEF1x концепция зависимых и независимых сущностей определяет тип связи, соединяющих эти две сущности. Причём целостность базы данных обеспечивается на уровне сущности или ссылки. Идентифицирующую связь ещё называют Strong Relationship, дочернюю сущность называют слабой.
Неидентифицирующая связь Edify Relationship, так соединяет родительскую сущность с дочерней, что перемещение PK происходит в область неключевых атрибутов. Фактически получается инвертированный неуникальный индекс.
Участие сущности в связях
Участие может быть частичным (необязательным) или Optional Participation. Для необязательной сущности минимальное значение мощности связи равно 0. Кроме того участие в сущности может быть полным или Total Mandatory (обязательным). Для обязательной сущности минимальное значение мощности связи равно 1. Поскольку мигрирующие ключи при неидентифицирующей связи не являются частью дочернего PK, то такая связь приводит к необязательному участию дочерней сущности в родительской (рисунок выше) При этом на родительском конце может быть ромбик, который означает, что ноль разрешен(Null Allowed). Т.е. есть игроки, которые не принадлежат ни одной команде. Иногда такого рода связи называют факультативной (необязательной).
Как установить связь
Надо правой клавишей мыши щёлкнуть по связи, выбрать опцию Relationship Properties и в разделе Relationship Type выбрать Non_Identifing. (неидентифицируемая связь). Там же можно выбрать разрешать ли ноль на родительском конце, т.е. будет или не будет ромбик.(Null Allowed – разрешен ноль, No Null – запрещен). Для идентифицирующей связи всегда No Null.
Пример факультативной связи:
В данном случае ясно, что пассажир не идентифицирует кресло. Если самолет полупустой, то это не значит, что нет кресла, это значит, что пассажира нет на кресле, т.е. ноль должен быть разрешён.
Рассмотрим пример иждивенец и работник. Сила связи и степень участия это не одно и тоже. Так связь между иждивенец и работник сильная (т.к иждивенец невозможен если нет работника). В то же время иждивенец для работника необязателен.
Имя роли
Когда ключ мигрирует из главной таблицы в подчиненную, то он играет двойную роль модели.
Player _Team _Id .Team _Id: первая половина Player _Team _Id — это имя роли, которую выполняет эта связь между двумя таблицами. А вторая часть – первоначальное имя внешнего ключа, иногда называемое основным именем. Такого рода понятия не часто, используются при моделировании, но характерные примеры можно привести, их два:
• при использовании рекурсивных связей (рыболовный крючок, т.е. таблица связана сама с собой) например: в таблицы хранятся сведения о работниках института: преподаватель подчиняется зав кафедре, зав кафедры подчиняется декану и т.д. таким образом таблица связана сама с собой:
• от одной сущности к другой проводиться несколько связей. Например, деньги и обменный пункт:
На связях пишут пояснения в виде глаголов (что они определяют). В обменном пункте существует 2 курса: продажа и покупка. Фактически имя роли – это синоним атрибута внешнего ключа, показывающий какую роль играет атрибут в дочерней сущности (продажа или покупка). Здесь важно указать имя роли. Во всех остальных случаях имя роли можно не указывать.