Идентифицирующая и неидентифицирующая связь

связи Анализ

В статье подробно рассказываем про идентифицирующую и неидентифицирующую связь: анатомию связи, как построить связи, как использовать связи в редакторе.

Идентифицирующая связь – это экземпляр сущности-потомка однозначно определяется своей связью (отношением) с сущностью-родителем. В таком случае связь каждый экземпляр подчиненной сущности идентифицируется значениями атрибутов родительской сущности.

Это означает, что экземпляр подчиненной сущности зависит от родительской сущности и не может существовать без экземпляра родительской сущности. В идентифицирующем отношении единственный экземпляр родительской сущности связан с множеством экземпляров подчиненной.

Идентифицирующая связь – экземпляр сущности-потомка однозначно определяется своей связью (отношением) с сущностью-родителем. В таком случае связь каждый экземпляр подчиненной сущности идентифицируется значениями атрибутов родительской сущности. Это означает, что экземпляр подчиненной сущности зависит от родительской сущности и не может существовать без экземпляра родительской сущности. В идентифицирующем отношении единственный экземпляр родительской сущности связан с множеством экземпляров подчиненной.

Читайте здесь бесплатных курсах программирования

Для создания зависимой сущности необходимо организовать передачу внешнего ключа в дочернюю сущность, и т.о. создать идентифицирующую связь между сущностью-родителем и сущностью-потомком изображается сплошной линией (рисунок 1). Атрибуты первичного ключа родительской сущности мигрируют в первичный ключ дочерней сущности, чтобы стать там атрибутами первичного ключа. Дочерняя сущность при идентифицирующей связи всегда является зависимой.

На Рисунке 4.2 представлено идентифицирующее отношение между сущностями ВКУСОВАЯ ДОБАВКА и МОРОЖЕНОЕ. Заметьте, что атрибуты первичного ключа родительской сущности ВКУСОВАЯ ДОБАВКА мигрировали в сущность МОРОЖЕНОЕ и стали там первичным ключом. Экземпляр сущности МОРОЖЕНОЕ не существует до тех пор, пока не появится экземпляр родительской сущности ВКУСОВАЯ ДОБАВКА. Обратите внимание на непрерывную линию между двумя сущностями.

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

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

Что почитать:

Что такое язык программирования. Виды и востребованность

Какой язык программирования выбрать новичку

В чем заключается работа программиста

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

На рисунке 4.3 представлено неидентифицирующее отношение между сущностями СМЕСЬ и ТИП СМЕСИ. Обратите внимание, что атрибуты первичного ключа родительской сущности СМЕСЬ мигрировали в подчиненную сущность ТИП СМЕСИ и стали там неключевы-ми атрибутами.

Неидентифицирующие связи отображаются пунктирной линией между объектами (рисунок 2.3.3.).

Неидентифицирующие связи являются уникальными для IDEF1X и используются для отображения другого типа передачи атрибутов внешних ключей — передача в область данных дочерней сущности (под линией). Так как переданные ключи в не идентифицирующей связи не являются составной частью первичного ключа дочерней сущности, то этот вид связи не проявляется ни в одной идентифицирующей зависимости. В этом случае и ОТДЕЛ, и СОТРУДНИК рассматриваются как независимые сущности.

Тем не менее, взаимосвязь может отражать зависимость существования, если бизнес-правило для взаимосвязи определяет то, что внешний ключ не может принимать значение NULL. Если внешний ключ должен существовать, то это означает, что запись в дочерней сущности может существовать только при наличии ассоциированной с ним родительской записи.

 

 

Создание сущностей и информации о них – это только часть картины. Связями называются логические соединения или ассоциации между двумя сущностями.

О связях

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

Данные, относящиеся к связям, очень важны и часто являются критическими данными, которые мы используем в повседневном бизнесе. Например, важно знать о каком-то типе инструмента, но знание того, к кому относится конкретный инструмент (связь между человеком и инструментом) может иметь критическую важность.

Связь — это соотношение либо между двумя сущностями, либо между сущностью и этой же сущностью. Связь — “логический” объект, представленный одним или несколькими атрибутами — внешними ключами. Связь в ERwin обычно содержит пять типов информации: тип связи, родительский конец связи, дочерний конец связи, знак “обязательности” связи и кардинальность связи.

Как показать на экране меню Editor

ERwin поставляется со строкой меню, в которой отсутствует меню Editor. Вы всегда можете войти в меню Display и Editor нажатием правой кнопки мыши. Указывая стрелкой курсора на диаграмму, вы вызываете на экран меню Display, а указывая курсором на объект, вызываете меню, содержащее все редакторы, связанные с этим объектом. Вместе с тем Вы можете показать меню Editor в строке меню или убрать его оттуда.

Как показать или убрать меню Editor

Дайте команду переключателя “Show Editor Menu” в меню Option для того, чтобы показать меню Editor в строке меню.
Для того, чтобы убрать меню Editor из строки меню, повторите эту команду.
Поддержка связей в Toolbox

На ERwin Toolbox есть пять типов связей: идентифицирующая, неидентифицирующая, полный кластер подтипов, неполный кластер подтипов, неопределенная (связь”многие-ко-многим”). Идентифицирующая связь — такая связь, при которой экземпляр дочерней сущности идентифицируется через свою ассоциацию с родительской сущностью. Атрибуты первичного ключа родительской сущности становятся атрибутами первичного ключа дочерней.

Неидентифицирующая связь – это такая связь, при которой экземпляр дочерней сущности не идентифицируется через свою ассоциацию с родительсой сущностью. Атрибуты первичного ключа родительской сущности становятся неключевыми атрибутами дочерней. См. также гл. 9, Связи: возможности повышенного уровня сложности, разд. “Задание неидентифицирующих связей” и “Создание связей подтипов”.

Как пользоваться инструментами, ориентированными на связь

Установите курсор на тот инструмент, который Вам нужен, и нажмите левую кнопку мыши.

идентифицирующая связь
неидентифицирующая связь

Щелкните по родительской, а затем по дочерней сущности для создания связи.
Использование pop-up меню Editor для связей

ERwin содержит специальную сокращенную версию меню Editor для связей. Если Вы щелкнете правой кнопкой мыши по связи, находящейся в окне диаграммы, то ERwin выведет на экран сокращенный, контекстно-чувствительный вариант меню Editor, которое содержит только редакторы, ориентированные на связи.
См. гл. 3, Сущности и атрибуты в ERwin, разд. “Использование редакторов ERwin”.

Если Вы установите курсор на линию связи, нажмете SHIFT и дважды щелкнете левой кнопкой мыши, то появится окно-диалог, в котором ERwin спросит Вас, хотите ли Вы открыть активный редактор для родительской или для дочерней сущности. Выберите нажатием кнопки мыши родительскую или дочернюю сущность и нажмите “ОК”.

Создание связи

Создать связь в ERwin легко. В этом разделе описывается, как создать связь и ввести необходимые данные по ней.

Как создать связь

На Toolbox выберите инструмент, соответствующий нужному типу связи (идентифицирующая связь — простая линия с одной точкой на конце, неидентифицирующая связь — пунктирная линия, у которой может быть (но не обязательно) ромбик на одном конце и точка на другом).
Нарисуйте связь: щелкните сначала по родительской, а затем по дочерней сущности.

Когда Вы сформируете связь, то ключ родительской сущности автоматически появится в качестве части ключа дочерней (для идентифицирующей связи) или в качестве неключевого атрибута дочерней сущности (для неидентифицирующей связи), причем рядом с ним будет стоять (FK), то есть внешний ключ, Foreign Key. Эта операция изменения дочерней сущности вследствие создания связи называется миграцией ключа.

Поскольку ERwin автоматически производит миграцию ключей, Вам не нужно вводить внешние ключи. Если Вы это сделаете, то получите повторяющиеся атрибуты и колонки, что приведет к конфликтной ситуации в Вашем проекте.

Работа в редакторе Relationship

Связи, как и сущности, могут иметь имена и метки. Эти метки называются глагольными фразами, они должны описывать, каким образом родительская сущность связана с дочерней. Редактор Relationship позволяет Вам задать глагольную фразу, кардинальность и отношение к нулевым значениям для связи.

Вы можете также задать в редакторе Relationship имя роли для атрибута — внешнего ключа. См. также гл. 8, Сущности и атрибуты: возможности повышенного уровня сложности, разд. “Использование имен ролей атрибутов”.

Как открыть редактор Relationship

Дайте команду “Relationship” в меню Editor.
Дважды щелкните по линии той связи, которую Вы хотите редактировать. Вы войдете в редактор Relationship.

Установите курсор на линию связи и щелкните правой кнопкой мыши. Вы войдете в pop-up меню Editor. Дайте в нем команду “Relationship”.

Как пользоваться редактором Relationship

Введите имя, которое идентифицирует связь, в окно “Verb Phrase”.

Обычно именем связи служит глагольная фраза (verb phrase). Старайтесь, чтобы имена связей как можно более полно их описывали! Редактор Relationship показывает первые четыре строки глагольной фразы и позволяет Вам вводить и просматривать даже большее число строк.

Для перехода на новую строку используйте клавишу “Возврат каретки”. ERwin изображает глагольную фразу на диаграмме в то самое время, когда Вы вводите ее в редакторе.

Рядом с областью для ввода глагольной фразы находится список “Foreign Keys”, который содержит все внешние ключи, которые возникли в результате миграции при задании текущей связи.

Если тип связи еще не задан, задайте его нажатием на кнопку выбора: “Identifying” или “Non-Identifying’.
Нажмите нужные кнопки выбора в окнах “Cardinality” и “Nulls” для задания кардинальности и режима нулевых значений для текущей связи.

Если Вы хотите связать имя роли с внешним ключом, щелкните по атрибуту в окне-списке “Foreign Key” и введите имя роли в текстовое окно “Role Name”.

См. гл. 8, Сущности и атрибуты: возможности повышенного уровня сложности, разд. “Использование имен ролей атрибутов”.

Нажмите “ОК” для того, чтобы сохранить изменения и выйти из редактора. Для выхода из редактора без сохранения изменений нажмите “Cancel”.

Как просматривать окно VERb Phrase

Вы можете пользоваться стрелками для прокручивания текста в окне “Verb Phrase” для того, чтобы просмотреть весь текст длинной глагольной фразы.

Задание кардинальности связи

Кардинальность связи служит для обозначения отношения числа экземпляров родительской сущности к числу экземпляров дочерней. Родительская сущность может связываться с дочерней одним из четырех способов. В IDEF1X кардинальность бинарных отношений равна 1:n, где n может принимать значения:

0, 1 или более — обозначается “пустым местом”
Каждая родительская сущность связана с 0, 1 или более экземпляров дочерней.
1 или более — обозначается буквой “Р”
Каждая родительская сущность связана с 1 или более экземпляров дочерней.
0 или 1 — обозначается буквой “Z”
Каждая родительская сущность связана с 0 или 1 экземпляром дочерней.
ровно n, где “n” — некоторое число
Каждая родительская сущность связана с ровно n экземплярами дочерней.

Редактор Relationship также позволяет Вам задавать кардинальность связи.

Как задать кардинальность связи

Находясь в редакторе Relationship, нажмите кнопку выбора, обозначающую нужную Вам кардинальность.
Если Вы нажали кнопку “Exactly”, то необходимо ввести число.

Если Вы задали этот режим и не ввели число, то ERwin не даст Вам выйти из окна-диалога.

Как показать кардинальность связи

ERwin позволяет Вам показать кардинальность связи на диаграмме.

Как показать или убрать кардинальность связи

Дайте команду “Cardinality” в меню Display.
Для того, чтобы убрать информацию о кардинальности, повторите эту команду.

Задание режима Null (нулевых значений)

В редакторе Relationship Вы можете задать также режим “нулевых значений”. Он относится к случаю, когда значения нет: это пустое множество или “нет колонки”. Атрибут, который может принимать нулевое значение, считается “необязательным” и на диаграмме изображается как ромбик на родительском конце связи. Вы можете задать этот режим и в других местах, но вообще говоря, первая такая возможность предоставляется именно в этом редакторе.

Как задать “обязательную” или “необязательную” связь

Находясь в редакторе Relationship, нажмите кнопку “No Nulls” для задания “обязательной” связи (ромбик на родительском конце отсутствует), или нажмите кнопку “Nulls Allowed” для задания “необязательной” связи (с ромбиком на родительском конце).

Работа в редакторе Relationship Definition

Вы можете также захотеть дать более полное определение Вашей связи для того, чтобы в дальнейшем иметь возможность на него ссылаться. Это делается в редакторе Relanship Definition.

Как войти в редактор Relationship Definition

Дайте команду “Relationship Definition” в меню Editor, если Вы еще ее не давали.
Дважды щелкните по той связи, которую Вы хотите отредактировать.

Установите курсор на ту связь, которую Вы хотите отредактировать, и нажмите правую кнопку мыши. Дайте команду “Relationship Definition” в меню Editor.

Если при попытке дважды щелкнуть по связи Вы получили сообщение “Select an Object First”, это значит, что Вы щелкнули не точно по линии связи. Нажмите кнопку “ОК” в окне сообщения, для того чтобы убрать его с экрана, и попробуйте снова. Постарайтесь щелкнуть точно по линии.

Как пользоваться редактором Relationship Definition

Имя связи, если оно есть, находится в окне “Verb Phrase”. Если хотите, можете его отредактировать.

Отредактируйте, как нужно, физическое имя связи “Relationship Physical Name”.

Введите определение в окно “Relationship Definition”.

После того, как Вы закончите работу, нажмите кнопку “ОК” для того, чтобы сохранить информацию и выйти из редактора. Для выхода из редактора без сохранения изменений нажмите кнопку “Cancel”.
Коррекция связей

Если Вам не нравится форма линии связи, ее можно изменить. Для этого Вам нужно захватывать мышью углы линии связи и переносить их с места на место, пока линия не начнет выглядеть лучше.

Как откорректировать связь

Щелкните по той связи, которую Вы хотите отредактировать. На экране появится “рычаг” связи (темный квадрат) . Он определяет место на линии связи, которое можно переносить.
Щелкните по любому месту того сегмента линии связи, где изображен рычаг.

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

Не отпуская левой кнопки мыши, измените расположение линии связи в соответствии с Вашим вкусом и затем отпустите кнопку мыши.

Никогда не забывайте регулярно сохранять изменения, которые Вы вносите в диаграмму.

Если у вас есть вопросы или пожелания, пожалуйста, напишите их в комментариях. Наша команда обязательно ответит на них в течение дня.

Айтистанция
Добавить комментарий

Adblock
detector