Понятие нормальных форм применимо к сущностям ER‑модели. Проведя нормализацию модели, мы получим нормализованную схему базы данных. Будем использовать классические определения нормальных форм [1, 2]. В модели "сущность-связь", пользуясь определениями нормальных форм, следует проверить каждую сущность и при необходимости провести ее нормализацию, т. е. разбить на две или более сущностей, находящихся в соответствующей нормальной форме. ERwin не позволяет проводить автоматическую нормализацию. Но простота создания новых сущностей и "перетаскивание" атрибутов в новые сущности облегчает нормализацию. Кроме того, запрет на присвоение неуникальных имен атрибутов в рамках модели облегчает соблюдение правила "один факт – в одном месте" [3], т. е. представление данных об одном объекте реального мира в одной сущности.
При соблюдении рекомендаций по выбору атрибутов, представленных в разделе 4.3, модель будет представлена в третьей нормальной форме.
При использовании ERwin более удобным, чем классическое определение нормальных форм, является использование бизнес‑нормальных форм [9]. Бизнес‑нормальные формы определяются в терминах приведения в эти формы.
|
|
Бизнес‑нормальные формы используют простые правила нормализации:
– размещайте повторяющиеся группы атрибуты в зависимых сущностях;
– убедитесь, что каждый факт в модели представлен только один раз;
– размещайте атрибуты, не зависящие от первичного ключа, в зависимых сущностях;
– устраняйте отношения многие-ко-многим.
Повторяющимися группами являются атрибуты, для которых единственный экземпляр сущности может иметь более одного значения. Например, сущность Сотрудник может иметь более одного навыка. Если, с точки зрения требований бизнеса, нам нужно знать уровень владения навыком для каждого сотрудника, и каждый сотрудник может иметь только два навыка, мы можем создать сущность, показанную на рис. 4.9. Здесь представлена сущность Сотрудник с двумя атрибутами для хранения навыков и уровня владения навыками для каждого.
Рис. 4.9. Пример использования повторяющихся групп
Проблема повторяющихся групп заключается в том, что мы не можем точно знать, сколько навыков может иметь сотрудник. В реальной жизни у некоторых людей есть один навык, у некоторых - несколько, а у некоторых - пока ни одного. Первая бизнес‑нормальная форма (1BNF) выносит повторяющиеся группы атрибутов в отдельную сущность. Эта сущность имеет составной ключ из атрибутов ключа исходной сущности и ключа повторяющейся группы. На рис. 4.10 представлена модель, приведенная к первой бизнес‑нормальной форме.
|
|
Рис. 4.10. Модель в 1BNF
Если один и тот же атрибут присутствует более чем в одной сущности и не является внешним ключом, то этот атрибут рассматривается как избыточный. Логическая модель не должна содержать избыточных данных.
Избыточность требует дополнительной памяти, однако, хотя эффективность использования памяти немаловажна, основная проблема заключается в сложности синхронизации избыточных данных.
В примере рис. 4.10 Название навыка зависит только от ID навыка, а Уровень владения навыком как от ID навыка, так и от ID сотрудника. Это приводит к повторению названия навыка столько раз, сколько сотрудников владеет навыком. Это так же усложняет изменение Названия навыка. Необходимо найти каждую запись с требуемым Названием навыка и изменить ее для каждого Сотрудник, владеющей этим навыком.
Вторая бизнес‑нормальная форма (2BNF) выносит атрибуты, частично зависящие от ключа, в отдельную сущность (рис. 4.11). У нас много сотрудников владеют одним навыком, а сотрудник может владеть несколькими навыками, эту особенность мы обсудим ниже.
Рис. 4.11. Модель в 2BNF
Каждый атрибут сущности должен зависеть от первичного ключа этой сущности. В примере атрибут Адрес учебного заведения зависит не от первичного ключа, а от атрибута Учебное заведение. В теории функциональных зависимостей такая связь называется транзитивной. Третья бизнес‑нормальная форма (3BNF) выносит атрибуты, не зависящие от первичного ключа, в отдельную сущность, где они полностью зависят от первичного ключа (рис. 4.12).
Рис. 4.12. Модель в 3BNF
На рис. 4.12 существует отношение многие-ко-многим между сущностями Сотрудник и Учебное заведение. Отношение точно отражает тот факт, что сотрудник окончить несколько учебных заведений, а одно учебное заведение могут окончить несколько сотрудников. Четвертая бизнес‑нормальная форма требует (4BNF), чтобы отражать многозначную зависимость с помощью отдельной ассоциативной сущности (рис. 4.13).
Рис. 4.13. Модель в 4BNF
Обратите внимание, что на рис. 4.11 мы уже использовали ассоциативную сущность для отображения связи " многие-ко-многим ".
Нормализация устраняет избыточность и аномалии, приводит к необходимости многократного выполнения длительной операции соединения отношений. Поэтому зачастую при переходе на физический уровень модели сознательно нарушают нормальные формы – проводят денормализацию. Для денормализации не существует четких правил. В ERwin денормализация облегчается тем, что некоторые сущности, атрибуты и ключи можно создавать только на логическом уровне. Такие объекты не отображаются на физическом уровне и не создаются при генерации схемы базы данных. С другой стороны, на физическом уровне можно создавать таблицыи колонки, которые отсутствуют на логическом уровне. Кроме того, имеется набор инструментов, называемый " Трансформация таблиц " (Transforms), позволяющий, в частности, в иерархии наследования переносить ключ и атрибуты от потомков к предку [3].
Литература к разделу 4
1. Карпова, Т. С. Базы данных: модели, разработка, реализация. – СПб.: Питер, 2001. – 304 с.
2. Дейт, К. Дж. Введение в системы баз данных. – М.: Вильямс, 2005. – 1328 с.
3. Маклаков, С. В. Создание информационных систем с AllFusion Modeling Suite. – М.: ДИАЛОГ‑МИФИ, 2007. – 432 с.
4. Верников Г. Основы методологии IDEF1X // https://www.interface.ru/fset.asp?Url=/ca/idef1x.htm
5. Зайцев, С. Л. Проектирование баз данных с ERwin // https://www.interface.ru/fset.asp?Url=/ca/comp.htm
6. Зайцев, С. Л. Понятие отношения // https://www.interface.ru/fset.asp?Url=/ca/ponatie.htm
7. Козодоев, А. Использование методик моделирования данных IDEF1X и IE в программном средстве AllFusion ERwin Data Modeler компании Computer Associates // https://www.interface.ru/ca/MethodsDM_ERwin.htm
8. Пушников, А. Ю. Введение в системы управления базами данных // https://www.citforum.ru/database/dblearn/index.shtml
9. Зайцев, С. Л. Проектирование баз данных с ERwin // https://www.interface.ru/fset.asp?Url=/ca/comp.htm
[1] В BPwin используется термин " Единица работы " (Unit of Work – UOW).