Нормализация сущностей
ERwin не содержит полного алгоритма нормализации и не может проводить нормализацию автоматически, поэтому сущности перед созданием логической модели необходимо вручную привести, как минимум, к 3НФ.
В результате нормализации все взаимосвязи данных становятся правильно определены, исключаются аномалии при манипулировании данными, модель данных становится легче поддерживать. Однако часто нормализация данных не ведет к повышению производительности ИС в целом. Дело в том, что в результате нормализации в модели данных увеличивается число отношений и для выполнения многих запросов придется выполнять операцию сцепления отношений (JOIN). Время выполнения каждого такого запроса велико и показатели общей производительности ИС могут ухудшиться.
В целях повышения производительности при переходе на физический уровень в ряде случаев приходится сознательно отходить от нормальных форм для того, чтобы использовать возможности конкретного сервера или ИС в целом.
В отличие от нормализации, нет четко сформулированных правил процесса денормализации. В каждом конкретном случае приходится искать конкретные решения, которые используют специфику ИС и предметной области и не могут быть общим руководством к действию.
Примером денормализации могут служить вычисляемые атрибуты, которые являются нарушением первой нормальной формы. Так, например, в ряде случаев такое вычисляемое данное, как возраст человека, хранят в БД физически для того, чтобы избежать длительных вычислений. Другой пример – атрибуты должность и оклад сотрудника приходится размещать в одной сущности, что является грубым нарушением 3НФ и может привести к противоречивости данных при их обновлении. Однако при обращении к этому полю потребуется открывать только одну таблицу.
Денормализация, как правило, производится на уровне физической модели. ERwin позволяет сохранить на уровне логической модели нормализованную структуру, при этом построить на уровне физической модели структуру возможно, денормализованнную. Благодаря этому, используя особенности конкретной СУБД и бизнес правила предметной области, в ряде случаев обеспечивается лучшая производительность ИС.
ERwin имеет следующую функциональность для поддержки денормализации:
Сущности, атрибуты, ключи и домены можно создавать только на уровне логической модели, включив в соответствующих редакторах опцию Logical Only. Такие объекты не будут отображаться на уровне физической модели, и не будут создаваться при генерации БД.
Таблицы, колонки, домены и индексы можно создавать только на уровнефизической модели (опция Physical Only). Например, на уровне только физической модели может быть создано поле Оклад таблицы СОТРУДНИК. При автоматическом разрешении связи многие-ко-многим в логической модели создается новое отношение только на уровне физической модели.
Диаграмму модели можно вывести на принтер с помощью диалога Print Model кнопки Печать или команды меню File /Print. Здесь можно увидеть расположение графических объектов, выводимых на печать. Кнопки Print All Pages или Print Selected Pages позволяют распечатать все страницы модели или только выделенные страницы. Можно установить масштаб и установить параметры печати (кнопка Page Setup).
Создание физической модели данных
Выбор сервера
На физическом уровне (уровень Physical) объекты БД должны называться так, как этого требуют ограничения выбранной СУБД. Физическая модель зависит от конкретной СУБД, поэтому одной и той же логической модели может соответствовать несколько физических моделей. ERwin поддерживает практически все распространенные СУБД, всего более 20 реляционных и не реляционных БД.
Для выбора СУБД служит редактор Target Server (меню Server/Target Server). Здесь надо щелкнуть по соответствующей кнопке рядом с именем СУБД.
Тип данных можно выбрать в раскрывающемся списке Default Datatype. Он содержит типы данных, поддерживаемые выбранным сервером. Этот тип будет по умолчанию присваиваться каждому полю таблицы.
Группа кнопок Default Non-Key Null Option позволяет разрешить ил запретить значения NULL для не ключевых полей.
Окно выбора Allow special chars in names позволяет разрешить или запретить использование специальных символов и пробелов в именах таблиц для тех СУБД, которые поддерживают использование специальных символов.
По умолчанию ERwin генерирует имена таблиц и индексов по шаблону на основе имен соответствующих сущностей и ключей логической модели. Окна Table Name Macro и Index Name Macro позволяют изменить шаблон генерации имен, заданный по умолчанию. В дальнейшем имена таблиц и индексов можно изменить вручную.
Кнопка Reset Names вызывает диалог Globally Reset DBMS Property, который позволяет заменить все имена таблиц, связей, индексов, столбцов и соответствующих свойств, заданных вручную, на значения по умолчанию.
Кнопка Ri Defaultвызывает диалог, который позволяет присвоить каждой связи между таблицами значение ссылочной целостности по умолчанию.
При смене СУБД ERwin предлагает автоматически преобразовать тип данных, связанный с каждым атрибутом, на ближайший, доступный для новой СУБД. Для автоматического преобразования следует в ответ на запрос нажать Yes.