Правила ссылочной целостности (Referential Integrity – RI)
Это логические конструкции, которые выражают бизнес-правила использования данных и представляют собой правила вставки, замены и удаления. Задать правила ссылочной целостности можно на закладке Rolename/RI Actions в диалоговом окне Relationship Editor.
При генерации схемы БД на основе этих опций логической модели будут сгенерированы правила декларативной ссылочной целостности, предписанные для каждой связи, и триггеры, обеспечивающие ссылочную целостность.
Связь «многие-ко-многим» возможна только на уровне логической модели данных. Такая связь обозначается сплошной линией с двумя точками на концах. Для внесения этой связи следует сначала нажать кнопку на палитре инструментов (ERwin Toolbox), а затем по очереди щелкнуть по обеим связываемым сущностям.
Чтобы облегчить чтение диаграммы, связь «многие-ко-многим» должна именоваться в обе стороны, т.е. двумя фразами (Verb Phrase).
Создание ключей
Каждый экземпляр сущности должен быть уникальным и отличаться от других экземпляров значениями своих атрибутов.
Первичный ключ (primary key) – это атрибут или группа атрибутов, однозначно идентифицирующих экземпляр сущности. На диаграмме атрибуты первичного ключа не требуют специального обозначения – они находятся в списке атрибутов выше горизонтальной линии. Если при внесении нового атрибута нужно сделать его атрибутом первичного ключа, то в диалоговом окне Attribute Editor следует включить флажок Primary Key в нижней части закладки General. Ключевой атрибут можно внести в состав первичного ключа и непосредственно на диаграмме, воспользовавшись операцией переноса атрибутов (кнопка в палитре инструментов).
В одной сущности может оказаться несколько атрибутов (или наборов атрибутов), претендующих на роль первичного ключа. Таких претендентов называют потенциальными ключами (candidate key). Многие сущности имеют только один потенциальный ключ, который и становится первичным. Некоторые сущности могут иметь более одного возможного ключа. Тогда один из них становится первичным, а остальные – альтернативными ключами. Альтернативный ключ (Alternative Key) – это потенциальный ключ, не ставший первичным.
Ключи могут быть сложными, т.е. содержащими несколько атрибутов. Сложные первичные ключи не требуют специального обозначения – это список атрибутов выше горизонтальной линии.
При выборе первичного ключа предпочтение должно отдаваться более простым ключам, т.е. ключам, содержащим меньшее количество атрибутов.
Каждому ключу соответствует индекс, имя которого также присваивается автоматически. Имена ключа и индекса при желании можно изменить вручную.
Внешние ключи (Foreign Key – FK) создаются автоматически при организации связей между сущностями, когда происходит так называемая миграция ключа и в дочерней сущности появляются ссылки на атрибуты первичного ключа. Эти новые атрибуты дочерней сущности образуют внешний ключ. Атрибуты внешнего ключа обозначаются символом (FK) после своего имени (рис. П.7).
Рис. П.7. Изображение сущностей и связей в логической модели
Домены
Доменом называют совокупность значений, из которых берутся значения атрибутов. Каждый атрибут может быть определен только на одном домене, но на каждом домене допускается определение нескольких атрибутов. В понятие домена входит не только тип данных, но и область значений данных. Например, можно объявить домен «Возраст» как положительное целое число, а затем определить атрибут «Возраст сотрудника» как принадлежащий этому домену.
Каждый домен в ERwin определяется только один раз, после этого он может использоваться как в логической, так и в физической модели.
На логическом уровне домены можно объявить без конкретных физических свойств. На физическом уровне они получают специфические свойства, которые можно изменить вручную. Наример, на логическом уровне домен «Возраст» может иметь тип Number, а на физическом уровне этому домену будет присвоен тип INTEGER.
При создании логической модели работа с доменами осуществляется в диалоговом окне Domain Dictionary Editor. Его можно вызвать из главного меню (пункт Edit/Domain Dictionary), а также из окна Attribute Editor с помощью кнопки, расположенной в верхней левой части закладки General.
В режиме Domain Dictionary Editor для создания нового домена нужно выполнить следующие действия:
· щелчком по кнопке New открыть диалоговое окно New Domain;
· выбрать родительский домен из списка Domain Parent. Новый домен создается на основе домена, который ранее объявлен пользователем, либо с использованием изначально существующего. По умолчанию ERwin имеет четыре предопределенных домена: String, Number, Blob, Datetime. Новый домен наследует все свойства родительского домена, но в дальнейшем эти свойства можно переопределить;
· набрать имя домена в поле Logical Name. С помощью поля Physical Name можно также указать имя домена на физическом уровне. Если физическое имя не указано, то по умолчанию оно принимает значение логического имени;
· щелкнуть по кнопке OK.
Диалоговое окно Domain Dictionary Editor позволяет связать домен с иконками двух типов:
· Domain Icon – для отображения домена в общем списке доменов;
· Icon Inherited by Attribute – для отметки в модели тех атрибутов, которые определены на данном домене.
Каждый домен может быть описан (закладка Definition), а также снабжен комментарием (закладка Note) или свойством, определенным пользователем (закладка UDP).
ERwin имеет специальный инструмент Independent Attribute Browser, который значительно облегчает создание в модели новых атрибутов с использованием описаний доменов. Соответствующее диалоговое окно вызывается (и скрывается) при нажатии комбинации клавиш CTRL+B. В списке этого окна нужно сначала выбрать домен, а затем с помощью мыши перенести его в какую-либо сущность, где будет создан новый атрибут, которому присваивается имя, указанное в поле Name Inherited by Attribute диалогового окна Domain Dictionary Editor. Если значение этого поля не задано, то по умолчанию новый атрибут принимает имя домена.
На физическом уровне диалоговое окно Domain Dictionary Editor позволяет редактировать физические свойства доменов. На соответствующей закладке, имя этой зависит от выбранного сервера БД, можно задать:
· конкретный тип данных (в соответствии с определением домена);
· правила присвоения NULL-значений;
· правила валидации (проверки допустимых значений) и установки значений по умолчанию.
Правила валидации и значения по умолчанию должны быть предварительно описанными и поименованными. Для вызова диалоговых средств редактирования правил валидации и значений по умолчанию служат кнопки справа от соответствующих списков выбора (Valid и Default).
Создание физической модели
Для переключения между логической и физической моделью данных служит список выбора в стандартной панели инструментов ERWin. При переключении на физический уровень автоматически создается физическая модель (рис. П.8).
Рис. П.8. Физическая модель торговой фирмы
Сервер
Физический уровень представления модели зависит от выбранного сервера. ERwin поддерживает практически все распространенные СУБД, всего более 20 реляционных и нереляционных БД.
Для выбора СУБД служит редактор Target Server, вызов которого осуществляется с помощью пункта с помощью меню Database ® Choose Database в главном меню (доступен только на физическом уровне).
Диалоговое окно Target Server (рис. П.9) позволяет задать тип данных и опцию NULL для новых колонок, а также принимаемые по умолчанию правила ссылочной целостности. Кнопки в группе Default Non-Key Null Option разрешают или запрещают значения NULL для неключевых колонок.
По умолчанию ERwin генерирует имена таблиц, колонок и индексов по шаблону на основе имен соответствующих сущностей, атрибутов и ключей логической модели. Если в имени сущности или атрибута встречается пробел, то он заменяется символом подчеркивания. Автоматически создавая имена таблиц и колонок, ERwin учитывает максимальную длину имени и другие синтаксические ограничения, накладываемые СУБД. При генерации имени таблицы или колонки по умолчанию длина имени обрезается до максимальной длины, допустимой для выбранной СУБД.
Рис. П.9. Диалоговое окно Target Server для выбора СУБД
При смене СУБД ERwin предлагает автоматически преобразовать тип данных, связанный с каждым атрибутом, на ближайший, доступный для новой СУБД.
Таблицы
Для внесения новой таблицы на физическом уровне в модель можно вносить новые таблицы и связи. Связи между таблицами создаются точно так же, как на логическом уровне. Щелкнув правой кнопкой мыши по таблице и выбрав во всплывающем меню пункты Table Editor или Column Editor, можно вызвать редакторы для задания свойств таблиц и колонок.
Важно помнить, что все изменения, сделанные в Table Editor или Column Editor, не отражаются на именах сущностей и атрибутов, поскольку информация на логическом и физическом уровнях в ERwin хранится отдельно.
Редактор Table Editor позволяет задать свойства любой таблицы модели, отличные от значений по умолчанию, в том числе имя таблицы, синонимы, правила валидации, процедуры и т.д.
Колонки
Для задания свойств колонок, отличных от значений по умолчанию, служит редактор Column Editor. Чтобы вызвать его, нужно щелкнуть правой клавишей мыши по таблице и во всплывающем меню выбрать пункт Column Editor.
По умолчанию ERwin присваивает режимы нулевых значений всем неключевым колонкам, исходя из значений по умолчанию, устанавливаемых в редакторе Target Server. Для колонок первичного ключа и альтернативных ключей устанавливается режим NOT NULL.
При создании связи колонки первичного ключа родительской таблицы мигрируют в состав колонок дочерней таблицы в качестве внешнего ключа. Кнопка Migrate вызывает диалоговое окно Migrate Column Property, где можно определить, какие характеристики мигрировавшей колонки будут сохранены в дочерней таблице. В частности, для переноса каких-либо характеристик колонки необходимо включить соответствующую опцию, а для отказа от переноса – выключить.
Опциями в окне Migrate Column Property следует пользоваться очень осторожно. Это обусловлено следующими обстоятельствами:
1) новые свойства колонки перезаписывают (уничтожают) старые;
2) установленные опции действуют в рамках всей диаграммы, а не только текущей таблицы.
Представления
Представления (view) или, как их иногда называют, временные (производные) таблицы – это объекты БД, в которых данные не хранятся постоянно, как в обычной таблице, а формируются динамически при обращении к представлению.
Представление не может существовать само по себе, а определяется только в терминах одной или нескольких таблиц. Применение представлений позволяет разработчику БД обеспечить каждому пользователю (или группе пользователей) свой взгляд на данные, что решает проблемы простоты использования и безопасности данных.
ERwin имеет специальные инструменты для создания и редактирования представлений. Палитра инструментов на физическом уровне содержит кнопки внесения представлений и установления связей между таблицами и представлениями. Для внесения представления нужно сначала щелкнуть по кнопке , а затем по свободному месту диаграммы.
По умолчанию представление получает номер V_n, где n – уникальный порядковый номер представления. Для установления связи нужно щелкнуть по кнопке , затем по родительской таблице и, наконец, по представлению. Связи с представлениями и прямоугольники представлений отображаются на диаграмме пунктирными линиями.
Для редактирования представления служит диалоговое окно View Editor. Чтобы вызвать это окно, нужно щелкнуть правой кнопкой мыши по представлению и выбрать в меню пункт View Editor.