СТАТЬЯ |
22.01.03
|
Зайцев С.Л., к.ф.-м.н.
В предыдущих статьях были описаны основные концепции моделирования данных, сущностей и атрибутов для выявления и определения требований к информации, предъявляемых моделируемой областью бизнеса. Как вы уже знаете, логическая модель представляется на ERD сущностями, атрибутами и отношениями. В этой статье основное внимание будет уделено детальному рассмотрению отношений.
В следующих разделах будут освещены следующие вопросы, касающиеся отношений:
На ER диаграммах сущности представляют контейнеры для атрибутов, атрибуты представляют интересующие нас факты, а отношения позволяют вам применять реляционную алгебру для связанных групп атрибутов в соответствие с бизнес-правилами. Давайте теперь рассмотрим отношения - сердце реляционной модели данных.
Отношение - это ассоциация или "связь" между двумя сущностями. Отношение представляется в модели линией, соединяющей две сущности и глагольной конструкцией, которая описывает, как две сущности зависят друг от друга. Глагольная конструкция - механизм описания бизнес-правил, определяющих отношение. Хорошая глагольная конструкция описывает отношение в терминах бизнеса, а не на языке технических спецификаций. На Рисунке 4.1 показано отношение между двумя сущностями.
Рис. 4.1. На ER диаграммах отношения представляются
линией
между двумя сущностями, или замкнутой на саму сущность.
Тип и свойства отношения представляют бизнес-правила.
Экземпляр сущности БАНАНОВЫЙ ДЕСЕРТ может иметь
один, два, три или ни одного экземпляра сущности
ВЕРХУШКА БАНАНОВОГО ДЕСЕРТА.
Экземпляр сущности ВЕРХУШКА БАНАНОВОГО ДЕСЕРТА
может принадлежать одному, и только одному экземпляру
сущности БАНАНОВЫЙ ДЕСЕРТ.
Отношения используются и в логической и в физической модели, и представляются в них в виде одного или нескольких мигрирующих атрибутов внешнего ключа. Отношения двунаправлены и представляют значимые ассоциации между двумя сущностями или сущности самой с собой.
Отношение обладает следующими свойствами:
|
Другим хорошим источником является корпоративная модель.
Проверьте отношения между сущностями в рамках моделируемой предметной области. Внимательно изучите внешние ключи, которые определяют отношения между кодовыми и другими сущностями. Эти отношения могут помочь выявить сущности, которые должны быть добавлены в вашу модель, или определить уровень абстракции, который улучшит ее расширяемость.
Вы можете выявить отношения и во время нормализации при появлении новых сущностей, связанных отношениями. Разрешение отношений многие-ко-многим в логической модели, скорее всего, приведет к появлению дополнительных сущностей и отношений.
|
Определив подходящую глагольную конструкцию, вы можете читать отношения справа налево, используя шаблон сущность - глагольная конструкция для отношения - сущность. Для примера, с магазином мороженого вы можете определить отношение:
Потребитель покупает Смесь
Или
Магазин продает разные сорта Мороженого
Чтение отношений на основе использования этой структуры - сущность - отношение - сущность (иногда называемой парная связь сущностей) - является полезным механизмом для представления отношений партнерам по бизнесу. Парные связи сущностей двунаправлены. Так что сущности связаны в обоих направлениях. Таким образом, Потребитель покупает Смеси то же самое, что и Смеси продаются Потребителю.
Такой способ прочтения отношений обеспечивает проверку корректности разработанной логической модели. Хотя отношения и не описывают полностью все бизнес-правила, они позволяют бизнес-партнерам просматривать модель для понимания взаимосвязей между сущностями. Я считаю, что это лучший способ убедиться, что каждая глагольная конструкция в модели формирует корректное утверждение. Просмотр модели вместе с бизнес-партнерами - один из основных методов проверки того, что модель правильно отражает бизнес-правила.
Степень отношения представляет собой число сущностей, ассоциированных с отношением. В основном, отношения имеют степень единица (унарные отношения) или двойка (бинарные отношения). Унарные, или рекурсивные отношения представляют случаи, когда экземпляр сущности связан с другим экземпляром той же самой сущности. Бинарные отношения представляют случаи, когда одна сущность связана с другой. Бинарные отношения отражают наиболее распространенные взаимосвязи, присутствующие в реальном мире. Фактически, большинство разработчиков моделей рассматривают унарные или рекурсивные отношения как бинарные рекурсивные отношения, связывающие экземпляр сущности с другим ее экземпляром. Например, высказывание "Некоторыми сотрудниками руководят другие сотрудники" представляет отношение между экземплярами сущности СОТРУДНИК.
|
Направленность отношения указывает на исходную сущность в отношении. Сущность, из которой отношение исходит, называется родительской сущностью. Сущность, в которой отношение заканчивается, называется подчиненной сущностью.
Направленность отношения определяется взаимосвязью между сущностями. В отношении между независимой и зависимой сущностями, отношение исходит из независимой сущности и заканчивается в зависимой сущности. Если обе сущности независимые, отношение симметрично. В отношении один-ко-многим родительской является сущность, входящая в отношение однократно. Отношения многие-ко-многим - симметричны.
В ERwin отношение между двумя сущностями, или сущности самой с собой, может принадлежать к одному из следующих типов:
Каждый тип отношений определяет поведение атрибутов первичного ключа, когда они мигрируют из родительской сущности в подчиненную. В следующих разделах будут описаны особенности каждого из типов отношений.
Идентифицирующим является отношение между двумя сущностями, в котором каждый экземпляр подчиненной сущности идентифицируется значениями атрибутов родительской сущности. Это означает, что экземпляр подчиненной сущности зависит от родительской сущности и не может существовать без экземпляра родительской сущности. В идентифицирующем отношении единственный экземпляр родительской сущности связан с множеством экземпляров подчиненной. Атрибуты первичного ключа родительской сущности мигрируют в атрибуты подчиненной, чтобы стать там атрибутами первичного ключа. На Рисунке 4.2 представлено идентифицирующее отношение между сущностями ВКУСОВАЯ ДОБАВКА и МОРОЖЕНОЕ. Заметьте, что атрибуты первичного ключа родительской сущности ВКУСОВАЯ ДОБАВКА мигрировали в сущность МОРОЖЕНОЕ и стали там первичным ключом.
Рис. 4.2. Идентифицирующее отношение между сущностями
МОРОЖЕНОЕ и ВКУСОВАЯ ДОБАВКА.
Экземпляр сущности МОРОЖЕНОЕ не существует до тех пор, пока не появится экземпляр родительской сущности ВКУСОВАЯ ДОБАВКА. Обратите внимание на непрерывную линию между двумя сущностями.
Неидентифицирующим является отношение между двумя сущностями, в котором каждый экземпляр подчиненной сущности не зависит от значений атрибутов родительской сущности. Это означает, что экземпляр подчиненной сущности не зависит от родительской сущности и может существовать без экземпляра родительской сущности. В неидентифицирующем отношении единственный экземпляр родительской сущности связан с множеством экземпляров подчиненной. Атрибуты первичного ключа родительской сущности мигрируют в подчиненную, чтобы стать там не ключевыми атрибутами. На рисунке 4.3 представлено неидентифицирующее отношение между сущностями СМЕСЬ и ТИП СМЕСИ. Обратите внимание, что атрибуты первичного ключа родительской сущности СМЕСЬ мигрировали в подчиненную сущность ТИП СМЕСИ и стали там неключевыми атрибутами.
Рис. 4.3. Неидентифицирующее отношение
между сущностями СМЕСЬ и ТИП СМЕСИ.
Обратите внимание, что ERwin изображает не идентифицирующее отношение в виде пунктирной линии.
Типизирующими являются отношения между родительской и одной или более подчиненными сущностями. Вы должны использовать типизирующие отношения в том случае, если имеет смысл указать на такие отношения, когда экземпляр родительской сущности определяет различные наборы атрибутов в подчиненных сущностях.
Клайв Финклештейн называет характеристические сущности вторичными сущностями. Характеристические сущности всегда имеют одну или более "равноправных" сущностей. Равноправные характеристические сущности связаны с родительской сущностью особым типом отношений, которые могут быть исключающими или включающими.
Исключающие типизирующие отношения указывают, что только одна подчиненная
сущность идентифицируется родительской сущностью. Другими словами, экземпляр
родительской сущности связаны с экземплярами не более чем одной вторичной сущности.
Исключающая характеристическая сущность представляет отношение "является"
(is a). На рисунке 4.4 изображено исключающее типизирующее отношение между сущностью
верхнего уровня СМЕСЬ и двумя характеристическими сущностями БАНАНОВЫЙ ДЕСЕРТ
и СЛИВОЧНАЯ ПОМАДКА.
Рис. 4.4. Исключающее типизирующее отношение
между сущностью верхнего уровня СМЕСЬ
и двумя подчиненными характеристическими сущностями
БАНАНОВЫЙ ДЕСЕРТ и СЛИВОЧНАЯ ПОМАДКА.
Заметьте символ подтипа X, указывающий, что это исключающее типизирующее отношение в нотации IE системы ERwin. Представленное бизнес-правило утверждает, что экземпляр сущности СМЕСЬ может быть сущностью БАНАНОВЫЙ ДЕСЕРТ или СЛИВОЧНАЯ ПОМАДКА, но не ими обеими одновременно.
Включающее типизирующее отношение указывает, что экземпляром родительской сущности могут определяться более одной вторичной сущности. Другими словами, экземпляр родительской сущности связан с экземплярами нескольких вторичных сущностей. Рисунок 4.5 демонстрирует включающее типизирующее отношение между родительской характеристической сущностью ПЕРСОНА и двумя подчиненными сущностями КЛИЕНТ и СОТРУДНИК.
Отношения многие-ко-многим возникают там, где один экземпляр одной сущности связан с несколькими экземплярами другой, и один экземпляр этой другой сущности также связан с несколькими экземплярами первой сущности. Эти отношения также называют неспецифическими. Отношения многие-ко-многим используются на предварительных стадиях разработки логической модели. Обычно они разрешаются за счет использования ассоциативной сущности, содержащей ключи родительских сущностей. Ассоциативные сущности позволяют экземплярам каждой из родительских сущностей быть представленными в виде уникальной пары во вторичной сущности. Рисунок 4.6 показывает отношение многие-ко-многим между сущностями СЛИВОЧНАЯ ПОМАДКА и МОРОЖЕНОЕ.
ЧАСТЬ I
Рис. 4.5. Включающее типизирующее отношение между
сущностью верхнего уровня ПЕРСОНА и двумя подчиненными
характеристическими сущностями КЛИЕНТ и СОТРУДНИК.
Обратите внимание на отсутствие символа подтипа X, указывающее, что это включающее типизирующее отношение в нотации IE системы ERwin. Представленное бизнес-правило утверждает, что экземпляр сущности ПЕРСОНА может быть одновременно сущностями КЛИЕНТ и СОТРУДНИК.
Рис. 4.6. Отношение многие-ко-многим
между сущностями СЛИВОЧНАЯ ПОМАДКА и МОРОЖЕНОЕ.
В нотации IE, ERwin представляет отношения многие-ко-многим непрерывной линией с "птичьей лапкой" на обоих концах.
Рекурсивное отношение - это неидентифицирующее отношение между двумя сущностями, которое указывает, что экземпляр сущности может быть связан с другим экземпляром той же самой сущности. При рекурсивном отношении родительская и подчиненная сущности совпадают. На Рисунке 4.7 показаны примеры двух реализаций рекурсивного отношения для сущности СОТРУДНИК, с использованием названия роли и без него. Обратите внимание, что ERwin "унифицирует" атрибуты внешнего ключа и первичного ключа, когда название роли не используется. Использование имени роли приводит к размещению внешнего ключа в качестве неключевого атрибута.
|
Рис. 4.7. Примеры реализации рекурсивных отношений
с использованием названия роли и без него в сущности ПЕРСОНА.
Заметьте, что без названия роли ERwin комбинирует атрибуты внешнего и первичного ключей.
Количество элементов отношения задает максимальное число экземпляров одной
сущности, которые могут быть связаны с экземплярами другой сущности. Количество
элементов определяется для обеих сторон отношения - для исходной и завершающей
сущностей. Количество элементов определяет максимальное количество экземпляров
сущностей, участвующих в отношении, в то время как обязательность определяет
минимальное число экземпляров. Подробнее об обязательности вы прочтете в следующем
разделе.
Количество элементов часто выражается как один или много.
Один и много могут появляться в трех различных комбинациях:
В отношении один-к-одному один и только один экземпляр сущности связан с одним и только одним экземпляром другой сущности.
Эти отношения иногда являются результатом нормализации, когда удаляются атрибуты, имеющие значения не для всех экземпляров сущности. Позаботьтесь проверить атрибуты родительской сущности, участвующей в отношении, для определения классификационного атрибута, чьи значения определяют, существует ли экземпляр в зависимой сущности. Если классификационный атрибут существует, рассмотрите возможность использования типизирующего отношения вместо отношения один-к-одному.
|
Рисунок 4.8 демонстрирует отношение один-к-одному между сущностями ПЕРСОНА и АДРЕС ПЕРСОНЫ.
Рис. 4.8 Пример отношения один-к-одному
между сущностями ПЕРСОНА и АДРЕС ПЕРСОНЫ.
Представленное бизнес-правило утверждает, что экземпляр сущности ПЕРСОНА может иметь ровно один адрес. Как и многие другие отношения один-к-одному, это отношение в действительности является некорректно представленным в модели отношением один-ко-многим.
В отношении один-ко-многим один и только один экземпляр сущности связан со многими экземплярами другой сущности. Сущность, входящая в отношение единственным экземпляром является родительской или исходной сущностью. Сущность, входящая в отношение многими экземплярами является подчиненной или конечной сущностью.
|
Эти отношения часто являются результатом нормализации, когда атрибуты повторяющейся группы переносятся в зависимую сущность. На Рисунке 4.9 показано отношение между сущностями ПЕРСОНА и АДРЕС ПЕРСОНЫ, корректно представленное в модели в виде отношения один-ко-многим.
Рис. 4.9. Пример отношения один-ко-многим
между сущностями ПЕРСОНА и АДРЕС ПЕРСОНЫ.
Представленное бизнес-правило утверждает, что экземпляр сущности ПЕРСОНА может иметь более одного адреса. Это отношение один-ко-многим исправляет ранее (неправильно) представленное в модели отношение один-к-одному.
Отношения многие-ко-многим возникают там, где один экземпляр одной сущности связан с несколькими экземплярами другой, и один экземпляр этой другой сущности также связан с несколькими экземплярами первой сущности. Эти отношения еще называют неспецифическими.
Отношения многие-ко-многим должны использоваться только на предварительных стадиях разработки логической модели. Поскольку отношения многие-ко-многим часто скрывают важные бизнес-правила или ограничения, они должны быть полностью преобразованы в ходе процесса моделирования. Разрешение отношения многие-ко-многим требует создания ассоциативной сущности, содержащей ключи обеих родительских сущностей и представляющей экземпляры каждой из родительских сущностей в виде уникальной пары во вторичной сущности.
ПРЕДОСТЕРЕЖЕНИЕ
Отношения многие-ко-многим являются логическими и не могут быть представлены в физической модели в ERwin. ERwin автоматически создает ассоциативные сущности для разрешения отношений многие-ко-многим когда модель преобразуется из логической в физическую.
Рисунок 4.10 показывает отношение между сущностями ПЕРСОНА и АДРЕС ПЕРСОНЫ, представленное в модели в виде отношения многие-ко-многим.
Рис. 4.10. Пример отношения многие-ко-многим
между сущностями ПЕРСОНА и АДРЕС ПЕРСОНЫ.
Это позволяет экземпляру сущности ПЕРСОНА иметь более одного адреса. В свою очередь экземпляр сущности АДРЕС ПЕРСОНЫ может иметь более одной персоны, живущей по этому адресу.
В отличие от количества элементов, обязательность отношения определяет, должны ли экземпляры сущности участвовать в отношении. Обязательность иногда называют модальностью или присутствием. В то время как количество элементов определяет максимальное количество экземпляров сущностей, которые могут участвовать в отношении, обязательность определяет минимальное число экземпляров, которые должны участвовать в отношении. Значение обязательности равно нулю в том случае, если экземпляр сущности не обязателен или не требуется, и равно единице, если наличие сущности требуется или обязательно.
Принимая решение об обязательности отношения, определите, должен ли экземпляр одной сущности всегда присутствовать, для того чтобы другая сущность участвовала в отношении. Если так - отношение обязательно. Так утверждение "Каждый сотрудник должен иметь одного руководителя" - пример обязательного отношения. Если экземпляр сущности не требуется - отношение необязательно. Например, утверждение "Некоторые из сотрудников могут иметь одного руководителя" - задает необязательное отношение.
В обязательном не идентифицирующем отношении атрибуты, мигрировавшие в неключевую область подчиненной сущности, являются обязательными для подчиненной сущности. Это значит, что значение внешнего ключа не может быть пустым. Рисунок 4.11 демонстрирует обязательное отношение.
Рис. 4.11. Обязательное отношение между сущностями
ПЕРСОНА и АДРЕС ПЕРСОНЫ.
Представленное бизнес-правило утверждает, что экземпляр сущности ПЕРСОНА должен иметь хотя бы один адрес. Обратите внимание, что в нотации IE системы ERwin терминальная точка отношения не включает символ ноль (кружок) в основании "птичьей лапки" - символа множественности.
В необязательном неидентифицирующем отношении атрибуты, мигрировавшие в неключевую область подчиненной сущности, не являются обязательными для подчиненной сущности. Это значит, что значение внешнего ключа может быть пустым. Рисунок 4.12 демонстрирует необязательное отношение между сущностями ПЕРСОНА и АДРЕС ПЕРСОНЫ.
Рис. 4.12. Необязательное отношение между сущностями
ПЕРСОНА и АДРЕС ПЕРСОНЫ.
Представленное бизнес-правило утверждает, что экземпляр сущности ПЕРСОНА не нуждается в адресе. Обратите внимание, что в нотации IE системы ERwin терминальная точка отношения включает символ ноль (кружок) в основании "птичьей лапки" - символа множественности.
Этот раздел, посвященный распространенным ошибкам при моделировании отношений, не претендует на полноту. В нем описаны некоторые ошибки, которые встречаются у разработчиков моделей.
Отношения являются сердцем реляционной модели. Неправильное представление в модели единственного отношения может нарушить целостность всей модели. ERwin не позволит вам совершить наиболее очевидные ошибки при использовании отношений.
Назначение имени в форме глагольной конструкции, направленности, степени, типа, количества элементов и обязательности данному отношению должно подтвердить его корректность. Если вы не сможете обеспечить все эти характеристики для отношения, скорее всего оно просто вообще не является отношением.
Внимательно проверьте атрибуты каждой из сущностей, участвующих в отношении один-к-одному. Проанализируйте атрибуты родительской сущности, участвующей в отношении, для нахождения классификационного атрибута, чьи значения определяют, существует ли экземпляр в зависимой сущности. Если классификационный атрибут существует, рассмотрите возможность использования типизирующего отношения вместо отношения один-к-одному. Как показывает опыт, реальные отношения один-к-одному очень редки и еще реже они реализуются на практике.
В отношении многие-ко-многим множество экземпляров одной сущности связаны с одним экземпляром другой и наоборот. Отношения многие-ко-многим не могут быть транслированы в физические таблицы и связи базы данных. Это ограничение систем баз данных, а не прикладных программ. Вы должны преобразовать отношения многие-ко-многим перед тем, как конструировать физическую модель данных и проектировать базу данных. Разработчиком моделей рекомендуется преобразовывать отношения многие-ко-многим в ходе рабочих сессий. Участники сессии обычно могут определить подходящую сущность для такого преобразования.
Разрешение отношения многие-ко-многим означает преобразование его в два отношения: один-ко-многим и многие-к-одному. Между двумя исходными создается новая сущность, и эта новая сущность называется ассоциативной сущностью или пересечением. Добавление этой сущности позволяет создать экземпляр для каждого возможного соответствия между двумя другими сущностями. Иногда ассоциативная сущность определяет границы или точку во времени.
При определении необязательности отношения и определении того, требуется ли наличие экземпляра одной сущности для существования экземпляра другой, важно убедиться, что требуемый экземпляр всегда доступен.
Можно попытаться обеспечить значения по умолчанию для требуемых внешних ключей. Однако часто выгода от заполнения необходимых данных фиктивными значениями невелика. Если информация так важна, что корпорация считает ее обязательной, в чем выгода от подставленных значений? Если существует вероятность, что сущность может не быть доступной для всех экземпляров, лучше сделать отношение необязательным.
Отношения представляют собой ассоциации или связи между сущностями. Они являются ядром реляционной модели данных. Визуально на ER диаграмме отношение представляется линией, соединяющей две сущности. Глагольная конструкция, описывающая взаимосвязь, позволяет вам "прочесть" отношение в форме сущность - глагольная конструкция - сущность. Отношения выявляются в ходе рабочих сессий, в процессе нормализации и путем сравнения с корпоративной моделью данных (если она доступна).
Отношения определяются в терминах степени, направленности, типа, количества элементов и обязательности. Степень определяет число сущностей, участвующих в отношении. По степени можно выделить унарные, бинарные и n-арные отношения. Унарным является отношение между экземплярами одной и той же сущности. Бинарные отношения связывают две сущности. N-арные отношения - это отношения между n сущностями, где n является числом больше двух. Наиболее часто используются бинарные отношения. Направление отношения определяется от исходной, или родительской, сущности, к завершающей, или подчиненной, сущности.
Тип отношения определяет поведение мигрирующих вторичных ключей. В ERwin тип отношения может быть одним из следующих:
Идентифицирующим является отношение, в котором первичный ключ родительской сущности требуется для идентификации экземпляра подчиненной сущности. В неидентифицирующем отношении первичный ключ родительской сущности становится одним или несколькими неключевыми атрибутами подчиненной сущности. Типизирующее отношение, в котором родительская сущность может иметь одну или несколько подчиненных сущностей, может быть исключающим или включающим. Исключающее типизирующее отношение указывает, что экземпляр родительской сущности может иметь соответствующие экземпляры только в одной из подчиненных сущностей. Включающее типизирующее отношение указывает, что экземпляр родительской сущности может иметь соответствующие экземпляры в нескольких подчиненных сущностях.
Отношения многие-ко-многим - это такие отношения, в которых экземпляры сущности связаны со многими экземплярами другой сущности, и наоборот. Это логические отношения, которые не могут быть представлены в физической модели и должны быть преобразованы за счет введения ассоциативной сущности между двумя сущностями. Ассоциативная сущность содержит первичные ключи каждой из исходных сущностей, что позволяет экземплярам ассоциативной сущности быть уникальными. Рекурсивными являются отношения, в которых экземпляр сущности связан с другим экземпляром той же самой сущности.
Количество элементов задает максимальное число экземпляров сущности, участвующих в отношении. Необязательность задает минимальное число. Количество элементов выражается терминами один или много. Необязательность выражается терминами ноль или один.
Понятия сущности, атрибута и отношений между ними исключительно важны для эффективного использования ERwin. В следующей статье "С чего начать работу с ERwin" будет описана инсталляция ERwin, настройка среды моделирования, а также будет представлены некоторые расширенные режимы отображения в ERwin.
Дополнительная информация
За дополнительной информацией обращайтесь в компанию Interface Ltd.
Обсудить на форуме Computer Associates
INTERFACE Ltd. |
|