Сущности и атрибуты
На диаграмме сущность изображается прямоугольником. В зависимости от режима представления диаграммы прямоугольник может содержать имя сущности, ее описание, список ее атрибутов и другие сведения. Основная информация, описывающая сущность, включает: - атрибуты, составляющие первичный ключ; - не ключевые атрибуты; - тип сущности (независимая/зависимая). Первичный ключ – это атрибут или набор атрибутов, уникально идентифицирующий экземпляр сущности. Если несколько наборов атрибутов могут уникально идентифицировать сущность, то выбор одного из них осуществляется разработчиком на основании анализа предметной области и учета следующих требований к первичному ключу: - первичный ключ не должен принимать пустые (NULL) значения; - первичный ключ не должен изменяться в течение времени; - размер первичного ключа должен быть как можно меньшим. Если разработчик считает, что какой-либо из оставшихся наборов будет часто использоваться для доступа к сущности, он может объявить его альтернативным ключом. Если экземпляры сущности могут быть уникально идентифицированы без определения ее связей с другими сущностями, она называется независимой. В противном случае сущность называют зависимой. Зависимая сущность отображается в ERwin прямоугольником с закругленными углами.
Связи
Связь в ERwin трактуется как функциональная зависимость между двумя сущностями (в частности, возможна связь сущности с самой собой). Если рассматривать диаграмму как графическое представление правил предметной области, то сущности являются существительными, а связи – глаголами. Например, между сущностями ОТДЕЛ и СОТРУДНИК существует связь " состоит из" (ОТДЕЛ состоит из СОТРУДНИКОВ). В ERwin связи представлены пятью основными элементами информации: - тип связи; - родительская и дочерняя (зависимая) сущности; - мощность связи; - допустимость пустых (null) значений; - требования по обеспечению ссылочной целостности. ERwin поддерживает следующие основные типы связей: идентифицирующая, неидентифицирующая, полная категория, неполная категория, многие-ко-многим. Связь называется идентифицирующей, если экземпляр дочерней сущности идентифицируется через ее связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в первичный ключ дочерней сущности. Дочерняя сущность при идентифицирующей связи всегда является зависимой. Связь называется неидентифицирующей, если экземпляр дочерней сущности идентифицируется иначе, чем через связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в состав неключевых атрибутов дочерней сущности. Идентифицирующая связь изображается сплошной линией; неидентифицирующая – пунктирной линией. Линии заканчиваются точкой со стороны дочерней сущности. При определении связи происходит миграция атрибутов первичного ключа родительской сущности в соответствующую область атрибутов дочерней сущности. Поэтому такие атрибуты не вводятся вручную. Поскольку атрибуты первичного ключа родительской сущности по умолчанию мигрируют со своими именами, ERwin считает, что в зависимой сущности атрибуты внешнего ключа появляются только один раз. Чтобы избежать этого ограничения, ERwin позволяет ввести для них роли, т.е. новые имена, под которыми мигрирующие атрибуты будут представлены в дочерней сущности. В случае неоднократной миграции атрибута такое переименование необходимо. Зависимая сущность может наследовать один и тот же атрибут от более чем одной родительской сущности или от одной и той же родительской сущности через несколько связей! (пример: между сущностями СДЕЛКА и ВАЛЮТА может быть две связи, порождающие в сущности СДЕЛКА два внешних ключа: Купленная валюта и Проданная валюта). Ситуация, когда экземпляру одной сущности соответствует один или несколько экземпляров второй сущности, а экземпляру второй сущности соответствует один или несколько экземпляров первой сущности, отражается в логической модели связью многие-ко-многим между данными сущностями. На диаграмме связь изображается сплошной линией с точками на концах. Например, для заключения сделки в некоторой фирме клиент обращается к любому из свободных сотрудников этой фирмы. В то же время сотрудник фирмы может обслуживать нескольких клиентов. Поэтому тип связи между сущностями КЛИЕНТ и СОТРУДНИК должен быть многие-ко-многим. Обратите внимание, что связь типа многие-ко-многим возможна только на логическом уровне! Преобразование связи данного типа производится созданием сущности связи (инструмент в выпадающем меню свойств связи). Связей многие-ко-многим рекомендуется избегать. В рассмотренном примере (КЛИЕНТ – СОТРУДНИК) этого можно добиться, если ввести дополнительную сущность СДЕЛКА. Мощность связи представляет собой отношение количества экземпляров родительской сущности к соответствующему количеству экземпляров дочерней сущности. Мощность связи определяется только для идентифицирующих и неидентифицирующих связей и записывается как 1: N. В соответствии с методологией IDEF1X ERwin предоставляет 4 варианта для N, которые изображаются дополнительным символом у дочерней сущности:
0, 1 или больше (по умолчанию) 1 или больше 0 или 1 ровно N (3)
Допустимость пустых (NULL) значений в неидентифицирующих связях ERwin изображает пустым ромбиком на дуге связи со стороны родительской сущности. В целях контроля ссылочной целостности (под ссылочной целостностью в ERwin понимается обеспечение требования, согласно которому значения внешнего ключа экземпляра дочерней сущности должны соответствовать значениям первичного ключа в родительской сущности) для каждой связи могут быть заданы требования по обработке операций INSERT/UPDATE/DELETE для родительской и дочерней сущности. ERwin предоставляет следующие варианты обработки этих событий: - отсутствие проверки; - проверка допустимости; - запрет операции; - каскадное выполнение операции (DELETE/UPDATE); - установка пустого (NULL-значения) или заданного значения по умолчанию.
|