Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОБДЗ_часть1_текст.doc
Скачиваний:
5
Добавлен:
04.11.2018
Размер:
1.38 Mб
Скачать

4.3. Сущности (Entity) в eRwin

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

Рисунок 1.1 – Отображение ключевых и неключевых атрибутов сущности

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

Сущность - это логическое понятие. Сущности соответствует таблица в реальной СУБД. В ERwin сущность визуально представляет три основных вида информации:

  • атрибуты, составляющие первичный ключ;

  • не ключевые атрибуты;

  • тип сущности (независимая/зависимая).

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

Для каждого первичного ключа ERwin создает при генерации структуры БД уникальный индекс.

Правила определения сущностей состоят в следующем:

  • Сущность должна иметь уникальное имя.

  • Сущность обладает одним или несколькими атрибутами, которые либо принадлежат сущности, либо наследуются через отношения.

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

  • Каждая сущность может обладать любым количеством отношений с другими сущностями.

  • Если внешний ключ целиком используется в составе первичного ключа, то сущность является зависимой от идентификатора.

Экземпляры независимой (родительской) сущности могут быть уникально идентифицированы без определения ее связей с другими сущностями; зависимая (дочерняя) сущность, наоборот, не может быть уникально идентифицирована без определения ее связей с другими сущностями. Зависимая сущность отображается в ERwin прямоугольником с закругленными углами (рис. 1.2).

Рисунок 1.2 – Пример представления родительской и дочерней сущности.

Существует несколько видов связей:

  • идентифицирующая. Идентифицирующая связь указывает на то, что дочерняя сущность в связи является логически зависимой от родительской сущности. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в первичный ключ дочерней сущности. Идентифицирующая связь отображается сплошной линией, причем дочерняя сущность является зависимой и поэтому отображается прямоугольником со скругленными углами, как показано на рис.1.2.

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

Рисунок 1.3 – Отображение не идентифицирующей связи

  • рекурсивная. Это такая связь, при которой одна и та же сущность является и родительской и дочерней. Такая ситуация часто встречается в реальном мире: напр, справедливы утверждения: «юди - родители людей», «руководители управляют руководителями», «компании приобретают компании» и т.д..

Существует два типа рекурсии, оба распространены и оба отражены в системе ERwin. Первый тип называется “иерархической рекурсией” (другое название - однотабличная рекурсия или “петля”), и задает иерархию связей между родительской и дочерней сущностью, при которой родитель может породить любой количество дочерних сущностей, но дочерняя сущность может иметь только одного родителя. Указывает на связь сущности саму на себя, рис. 1.4.

Рисунок 1.4 – Представление иерархической рекурсивной связи

Рекурсивные связи должны быть не идентифицирующими. Обосновать данное утверждение можно с доказательства того, по какой причине им не имеет смысла быть идентифицирующими. В идентифицирующей связи первичный ключ родительской сущности становится подмножеством первичного ключа дочерней, и ключевые атрибуты никогда не могут принимать значение NULL. Подумав об этом и нарисовав простую таблицу экземпляров на основе примера из “реального мира”, можно убедиться, что идентифицирующая связь не имела бы смысла, потому что она бы утверждала, что некоторая сущность является своим собственным родителем. Мигрирующий ключ мигрировал бы бесконечное число раз, что собственно не имеет смысла.

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

Все общие атрибуты выделяются в сущность называемую супертипом, а отличающиеся атрибуты помещаются в сущности - подтипы, связанные с супертипом, рис. 1.5. При помощи дискриминанта определяется, с экземпляром какого подтипа связан экземпляр супертипа.

Рисунок 1.5 – Выделение супертипа и использование иерархии категорий

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

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