Различают два уровня физической модели:
трансформационная модель (Transformation Model);
модель СУБД (DBMS Model).
Физическая модель содержит всю информацию, необходимую для реализации конкретной БД. Трансформационная модель содержит информацию для реализации отдельного проекта, который может быть частью общей ИС и описывать подмножество предметной области. ERwin поддерживает ведение отдельных проектов, позволяя проектировщику выделять подмножество модели в виде предметных областей (Subject Area). Трансформационная модель позволяет проектировщикам и администраторам БД лучше представлять, какие объекты БД хранятся в словаре данных, и проверить, насколько физическая модель данных удовлетворяет требованиям к ИС.
Модель СУБД автоматически генерируется из трансформационной модели и является точным отображением системного каталога СУБД. ERwin непосредственно поддерживает эту модель путем генерации системного каталога.
2.3.2. Выбор сервера
Физический уровень представления модели зависит от выбранного сервера. Для выбора СУБД служит редактор Target Server (меню Server/Target Server... доступно только на физическом уровне) (рис. 2.60).
ERwin поддерживает практически все распространенные СУБД, всего более 20 реляционных и нереляционных БД. Для выбора СУБД нужно щелкнуть по соответствующей кнопке рядом с именем СУБД.
Диалог Target Server позволяет задать тип данных и опцию NULL для новых колонок, а также правила ссылочной целостности, принимаемые по умолчанию. Тип данных можно выбрать в раскрывающемся списке Default Datatype, который автоматически заполняется типами данных, поддерживаемых выбранным сервером. Установка правил ссылочной целостности по умолчанию была рассмотрена в 2.2.3.
Группа кнопок Default Non-Key Null Option позволяет разрешить или запретить значения NULL для неключевых колонок.
Окно выбора Allow special chars in names позволяет разрешить или запретить использование специальных символов и пробелов в именах таблиц. Эта опция действует только для тех СУБД, которые поддерживают использование специальных символов.
Рис. 2.60. Диалог Target Server
По умолчанию ERwin генерирует имена таблиц и индексов по шаблону на основе имен соответствующих сущностей и ключей логической модели. Окна Table Name Macro и Index Name Macro позволяют изменить шаблон генерации имен, заданный по умолчанию. В дальнейшем имена таблиц и индексов можно изменить вручную.
Кнопка Reset Names вызывает диалог Globally Reset DBMS Property (рис. 2.61), который позволяет заменить все имена таблиц, связей, индексов, колонок и соответствующих свойств, заданных вручную, на значения по умолчанию.
Имена таблиц и колонок по умолчанию будут сгенерированы на основе имен сущностей и атрибутов логической модели. Если в имени сущности или атрибута встречается пробел, он будет заменен на символ "_".
При смене СУБД ERwin предлагает автоматически преобразовать тип данных, связанный с каждым атрибутом, на ближайший, доступный для новой СУБД. Для автоматического преобразования следует в ответ на запрос нажать Yes.
Рис. 2.61. Диалог Globally Reset DBMS Property
2.3.3. Таблицы, колонки и представления (view)
Для внесения новой таблицы в модель на физическом уровне служит кнопка
на палитре инструментов. Связи между таблицами создаются так же, как на логическом уровне. Щелкнув правой клавишей мыши по таблице и выбрав во всплывающем меню пункты Table Editor или Column Editor, можно вызвать редакторы для задания свойств таблиц и колонок.ERwin автоматически создает имена таблиц и колонок на основе имен соответствующих сущностей и атрибутов, учитывая максимальную длину имени и другие синтаксические ограничения, накладываемые СУБД. При генерации имени таблицы или колонки по умолчанию все пробелы автоматически преобразуются в символы подчеркивания, а длина имени обрезается до максимальной длины, допустимой для выбранной СУБД. Все изменения, сделанные в Table Editor или Column Editor, не отражаются на именах сущностей и атрибутов, поскольку информация на логическом и физическом уровнях в ERwin хранится отдельно.
Редактор Table Editor позволяет задать свойства любой таблицы модели, отличные от значения по умолчанию, в том числе имя таблицы, синонимы, правила валидации, процедуры и т. д. Переключиться на другую таблицу можно при помощи раскрывающегося списка выбора в верхней части диалога (рис. 2.62).
Рис. 2.62. Диалог Table Editor
Окно Name служит для задания имени текущей таблицы. Окно Owner позволяет внести имя владельца таблицы, отличное от имени пользователя, производящего генерацию схемы БД. Окно выбора Physical Only служит для создания объектов только на физическом уровне. Если выбрана опция Generate, при генерации схемы БД будет выполняться команда CREATE TABLE. Кнопка DB Sync служит для немедленной синхронизации модели с системным каталогом БД.
Диалог Table Editor содержит следующие закладки:
Dimensional. Доступна только на уровне моделирования хранилищ данных (Dimensional Modeling) и будет рассмотрена ниже.
Comment. Внесение комментария к таблице.
Volumetrics. Служит для оценки размера БД.
Physical Props. Позволяет задать физические свойства таблицы.
Partitions. Служит для задания значений разделения. Доступна только для Oracle 8.x.
UDP. Задание свойств, определяемых пользователем.
Validation. Задание правил валидации.
Synonym. Задание синонимов таблицы (если сервер таковые поддерживает).
Stored Procedure. Связывание с таблицей хранимых процедур.
Pre & Post Script. Создание скриптов (наборов команд), которые будут выполняться до и после создания таблицы при генерации схемы БД.
PowerBuilder. Задание расширенных атрибутов для генерации кода клиентского приложения на PowerBuilder.
Для задания свойств колонок, отличных от значения по умолчанию, служит редактор Column Editor (рис. 2.63). Чтобы вызвать его, нужно щелкнуть правой клавишей мыши по таблице и выбрать во всплывающем меню пункт Column Editor.
По умолчанию ERwin присваивает режимы нулевых значений всем неключевым колонкам, исходя из значений по умолчанию, устанавливаемых в редакторе Target Server. Для колонок первичного ключа и альтернативных ключей .устанавливается режим NOT NULL. Режим NOT NULL не присваивается автоматически инверсионным входам (Inversion Entry).
Рис. 2.63. Диалог Column Editor
Внешне диалог Column Editor напоминает диалог Attribute Editor (см. рис. 2.14). В правой части диалога находятся закладки:
General. Позволяет присвоить колонку определенному домену, создать колонку только на физическом уровне и включить ее в состав первичного ключа.
Закладка, соответствующая выбранной СУБД (на рис. 2.63 и 2.64 -ORACLE). Имя закладки устанавливается автоматически соответствующей выбранной СУБД. Позволяет задать тип данных, опцию NULL, правила валидации и значение по умолчанию. Правила валидации и значение по умолчанию должны быть описаны и именованы предварительно соответственно в диалогах Validation Rule Editor и Default/Initial Eritor. Для вызова этих диалогов служат кнопки !!! справа от соответствующих раскрывающихся списков. Для СУБД Access, AS/400, PROGRESS и Teradata создаются дополнительные закладки для задания свойств.