<На страницу назад | На страницу вперед >
Отношение может быть определено просто как ассоциация или связь между двумя сущностями. Точнее, это называется бинарным отношением. IDEF1X ограничивается бинарными отношениями, поскольку исследовать и понимать их легче, чем n-арные отношения. Кроме того, они имеют непосредственное графическое представление. Недостатком является некоторое неудобство при представлении n-арных отношений. Но в этом нет ограничения общности, поскольку любое n-арное отношение может быть выражено через n бинарных отношений.
Экземпляр отношения - это имеющая смысл ассоциация или связь между двумя экземплярами сущностей. Например, экземпляр сущности ОПЕРАТОР, имя которого - Джон Дол, а номер оператора - 862, приписан к экземпляру сущности СТАНОК, тип которого - сверлильный станок, а номер станка - 12678. IDEFlX-отношение представляет множество однотипных образцов отношений между двумя специфическими сущностями. При этом одна и та же пара сущностей может обладать отношениями нескольких типов.
Целью IDEF1X является не изображение всех возможных отношений, а определение взаимосвязей между сущностями в терминах отношений зависимости существования (отношений родитель-потомок). Такое отношение - это ассоциация между типом родительской сущности и типом сущности-потомка, при которой каждый экземпляр родительской сущности ассоциирован с произвольным (в том числе нулевым) количеством экземпляров сущности-потомка, а каждый экземпляр сущности-потомка ассоциирован в точности с одним экземпляром родительской сущности. Это означает, что существование сущности-потомка зависит от существования родительской сущности. Например, ПОКУПАТЕЛЬ делает ноль, один или несколько ЗАКАЗОВ_НА_ПОКУПКУ, а ЗАКАЗ_НА_ПОКУПКУ производится одним ПОКУПАТЕЛЕМ.
Если сущность-родитель и сущность-потомок представляют один и тот же объект реального мира, то родительская сущность является общей сущностью, а сущность-потомок является сущностью-категорией. Для каждого экземпляра сущности-категории всегда имеется один экземпляр общей сущности. Для каждого экземпляра общей сущности может существовать ноль или один экземпляр сущности-категории. Например, ШТАТНЫЙ_СЛУЖАЩИЙ является СЛУЖАЩИМ. СЛУЖАЩИЙ может быть или не быть ШТАТНЫМ_СЛУЖАЩИМ. Если несколько сущностей-категорий ассоциируются с общей сущностью в отношении категоризации, то только одна категория может соответствовать данному экземпляру общей сущности. Например, отношение категоризации может использоваться для представления того факта, что СЛУЖАЩИЙ может быть либо ШТАТНЫМ_СЛУЖАЩИМ, либо СЛУЖАЩИМ_ПОЧАСОВИКОМ, но не тем и другим одновременно.
В начале разработки модели часто невозможно представить все отношения как отношения родитель-потомок или отношения категоризации. Поэтому неспецифические отношения на стадии 2 должны быть преобразованы в специфические. Неспецифические отношения имеют общую форму - "ноль, один или много - к - ноль, один или много". Существование любой сущности не зависит от существования другой.
Первым шагом на стадии 2 является выявление отношений между элементами различных сущностей. Эта задача может потребовать разработки матрицы отношений, пример которой приведен на рис. 4-4. Матрица отношений - это двумерный массив, обладающий горизонтальной и вертикальной осями. Множество предопределенных факторов (в данном случае - все сущности) записывается вдоль одной из осей, а другое множество факторов (в данном случае - также все сущности) - записывается вдоль другой оси. Для указания на возможное отношение между двумя сущностями в точке пересечения соответствующих осей помещается знак "+". В этот момент суть отношения не важна: достаточно того, что отношение может существовать.
Студент | Предмет | Лектор | Аудитория | Классное занятие | |
---|---|---|---|---|---|
Студент | + | ||||
Предмет | + | + | |||
Лектор | + | + | |||
Аудитория | + | + | + | ||
Классное занятие | + | + |
Матрица "сущность-отношение" отражает только сам факт существования отношения некоторого типа.
Рис. 4-4. Матрица Сущность-Отношение
Разработчики-новички обычно устанавливают, чрезмерное количество отношений между сущностями. Помните, что целью в конечном итоге является определение модели в терминах отношении родитель-потомок. Избегайте косвенных отношений. Например, если ОТДЕЛ ответствен за один или несколько ПРОЕКТОВ, а каждый ПРОЕКТ инициирует одно или несколько ПРОЕКТНЫХ_ЗАДАНИЙ, то нет необходимости в отношении между ОТДЕЛОМ и ПРОЕКТНЫМ_ЗАДАНИЕМ, поскольку все ПРОЕКТНЫЕ_ЗАДАНИЯ связаны с ПРОЕКТОМ, а все ПРОЕКТЫ связаны с ОТДЕЛОМ.
Более опытные разработчики предпочитают наброски диаграммы уровней сущностей, а не составление матрицы отношений. Однако важно определять отношения в процессе их выявления.