Цель работы: изучить виды нормальных форм; освоить роль CASE-средства ERwin при нормализации и денормализации БД; построить физическую модель; изучить алгоритмы перевода БД в первую, вторую, третью и четвертую нормальную форму (для самостоятельного изучения).
1. Методические указания
Нормализация - процесс проверки и реорганизации сущностей и атрибутов с целью удовлетворения требований к реляционной модели данных. Нормализация позволяет быть уверенным, что каждый атрибут определен для своей сущности, значительно сократить объем памяти для хранения данных. Для рассмотрения видов нормальных форм введем понятия функциональной и полной функциональной зависимости.
Функциональная зависимость: Атрибут В сущности Е функционально зависит от атрибута А сущности Е, если и только если каждое значение А в Е связало с ним точно одно значение В в Е. Другими словами, А однозначно определяет В.
Полная функциональная зависимость: Атрибут Е сущности В полностью функционально зависит от ряда атрибутов А сущности Е, если и только если В функционально зависит от K и не зависит ни от какого подряда А.
Существуют следующие виды нормальных форм:
• Первая нормальная форма (1NF). Сущность Е находится в первой нормальной форме, если и только если все атрибуты содержат только атомарные значения. Среди атрибутов не должно встречаться повторяющихся групп, т. е. нескольких значений для каждого экземпляра.
• Вторая нормальная форма. Сущность Е находится во второй нормальной форме, если она находится в первой нормальной форме и каждый неключевой атрибут полностью зависит от первичного ключа, т. е. не существует зависимостей от части ключа.
• Третья нормальная форма (3NF). Сущность Е находится в третьей нормальной форме, если она находится во второй нормальной форме и неключевые атрибуты сущности Е зависят от других атрибутов Е.
• Четвертая нормальная форма (4NF). Отношение R находится в 4NF и том и только в том случае, когда существует многозначная зависимость между A и B, а все остальные атрибуты R функционально зависят от A.
После четвертой нормальной формы существуют и другие нормальные формы. На практике ограничиваются приведением к четвертой нормальной форме. Часто после проведения нормализации все взаимосвязи данных становятся правильно определены, модель данных становится легче поддерживать. Однако нормализация не ведет к повышению производительности системы в целом, поэтому при создании физической модели в целях повышения производительности приходится сознательно отходить от нормальных форм, чтобы использовать возможности конкретного сервера. Такой процесс называется денормализацией.
ERwin обеспечивает только поддержку нормализации, но не содержит в себе алгоритмов, автоматически преобразующих модель данных из одной формы в другую.
ERwin поддерживает корректность имен следующим образом:
• отмечает повторное использование имени сущности и атрибута;
• не позволяет внести в сущность более одного внешнего ключа;
• запрещает присвоение неуникальных имен атрибутов внутри одной модели, соблюдая правило «в одном месте - один факт».
Создание физической модели
Целью создания физической модели является обеспечение администратора соответствующей информацией для переноса логической модели данных в СУБД. ERwin поддерживает автоматическую генерацию физической модели данных для конкретной СУБД. При этом логическая модель трансформируется в физическую по следующему принципу: сущности становятся таблицами, атрибуты становятся столбцами, а ключи становятся индексами (табл. 4).
Таблица 4 - Сопоставление компонентов логической и физической модели
Логическая модель | Физическая модель |
Сущность | Таблица |
Атрибут | Столбец |
Логический тип (текст, число, дата, blob) | Физический тип (корректный тип, зависящий от выбранной СУБД) |
Первичный ключ | Первичный ключ, индекс PK |
Внешний ключ | Внешний ключ, индекс FK |
Альтернативный ключ | AK-индекс, уникальный, непервичный индекс |
Правило бизнес-логики | Триггер или сохраненная процедура |
Взаимосвязи | Взаимосвязи, определяемые использованием FK-атрибутов |
После нормализации все взаимосвязи данных становятся определены, исключая ошибки при оперировании данными. Но нормализация данных снижает быстродействие БД. Для более эффективной работы с данными, используя возможности конкретного сервера БД, приходится производить процесс, обратный нормализации, - денормализацию.
Для процесса денормализации не существует стандартного алгоритма, поэтому в каждом конкретном случае приходится искать свое решение. Денормализация обычно проводится на физическом уровне модели. ERwin имеет следующие возможности по поддержке процесса денормализации:
• Сущности, атрибуты, группы ключей и домены можно создавать только на логическом уровне модели.
• В ERwin существует возможность выделения элементов логической модели таким образом, чтобы они не появлялись на физическом уровне.
• Таблицы, столбцы, индексы и домены можно создавать только на физическом уровне.
• В ERwin существует возможность выделения элементов модели таким образом, чтобы они не появлялись на логическом уровне. Эта возможность напрямую поддерживает денормализацию физической модели, так как позволяет проектировщику включать таблицы, столбцы и индексы в физическую модель, ориентированную на конкретную СУБД.
• Разрешение связей «многие-ко-многим». При разрешении этих связей в логической модели ERwin добавляет ассоциированные сущности и позволяет добавить в них атрибуты. При разрешении связей в логической модели автоматически разрешаются связи и в физической модели.
Задание
1. Построить физическую модель.
2. Нормализовать БД до третьей или четвертой нормальной формы.
3. Установить типы данных.
4. Сгенерировать код на SQL.
5. Перенести результат в СУБД Access или SQL-Server.
6. Построить запрос.
7. Составить отчет.
8. Ответить на контрольные вопросы.