4.4. О нормализации,
функциональных и многозначных
зависимостях
Нормализация
– это разбиение таблицы на две или
более, обладающих лучшими
свойствами при включении,
изменении и удалении данных.
Окончательная цель нормализации
сводится к получению такого
проекта базы данных, в котором каждый
факт появляется лишь в одном месте,
т.е. исключена избыточность
информации. Это делается не столько
с целью экономии памяти, сколько
для исключения возможной
противоречивости хранимых данных.
Как указывалось в п. 3.1,
каждая таблица в реляционной БД
удовлетворяет условию, в
соответствии с которым в позиции на
пересечении каждой строки и
столбца таблицы всегда находится
единственное атомарное значение, и
никогда не может быть множества
таких значений. Любая таблица,
удовлетворяющая этому условию,
называется нормализованной
(см. таблицы рис. 4.2
– 4.4). Фактически,
ненормализованные таблицы, т.е.
таблицы, содержащие повторяющиеся
группы (см. рис. 4.1),
даже не допускаются в реляционной
БД.
Всякая нормализованная таблица
автоматически считается таблицей в
первой нормальной
форме, сокращенно 1НФ. Таким
образом, строго говоря,
"нормализованная" и
"находящаяся в 1НФ" означают
одно и то же. Однако на практике
термин "нормализованная"
часто используется в более узком
смысле – "полностью
нормализованная", который
означает, что в проекте не
нарушаются никакие принципы
нормализации.
Теперь в дополнение к 1НФ можно
определить дальнейшие уровни
нормализации – вторую нормальную
форму (2НФ), третью
нормальную форму (3НФ) и т.д. По
существу, таблица находится в 2НФ,
если она находится в 1НФ и
удовлетворяет, кроме того,
некоторому дополнительному
условию, суть которого будет
рассмотрена ниже. Таблица
находится в 3НФ, если она находится
в 2НФ и, помимо этого, удовлетворяет
еще другому дополнительному
условию и т.д.
Таким образом, каждая нормальная
форма является в некотором смысле
более ограниченной, но и более желательной,
чем предшествующая. Это связано с
тем, что "(N+1)-я нормальная
форма" не обладает некоторыми
непривлекательными особенностями,
свойственным "N-й нормальной
форме". Общий смысл
дополнительного условия,
налагаемого на (N+1)-ю нормальную
форму по отношению к N-й нормальной
форме, состоит в исключении этих
непривлекательных особенностей. В
п. 4.3 мы выявляли
непривлекательные особенности
таблицы рис. 4.2 и для
их исключения выполняли
"интуитивную нормализацию".
Теория нормализации основывается
на наличии той или иной зависимости
между полями таблицы. Определены
два вида таких зависимостей:
функциональные и многозначные.
Функциональная
зависимость. Поле В таблицы
функционально зависит от поля А той
же таблицы в том и только в том
случае, когда в любой заданный
момент времени для каждого из
различных значений поля А
обязательно существует только одно
из различных значений поля В.
Отметим, что здесь допускается, что
поля А и В могут быть составными.
Например, в таблице Блюда (рис. 4.4) поля Блюдо и Вид
функционально зависят от ключа БЛ,
а в таблице Поставщики рис. 4.3 поле
Страна функционально зависит от
составного ключа (Поставщик, Город).
Однако последняя зависимость не
является функционально полной, так
как Страна функционально зависит и
от части ключа – поля Город.
Полная функциональная
зависимость. Поле В находится в
полной функциональной зависимости
от составного поля А, если оно
функционально зависит от А и не
зависит функционально от любого
подмножества поля А.
Многозначная
зависимость. Поле А многозначно
определяет поле В той же таблицы,
если для каждого значения поля А
существует хорошо определенное
множество соответствующих
значений В.
Обучение
| Дисциплина |
Преподаватель |
Учебник |
| Информатика |
Шипилов П.А. |
Форсайт Р. Паскаль для
всех |
| Информатика |
Шипилов П.А. |
Уэйт М. и др. Язык Си |
| Информатика |
Голованевский Г.Л. |
Форсайт Р. Паскаль для
всех |
| Информатика |
Голованевский Г.Л. |
Уэйт М. и др. Язык Си |
| ... |
... |
... |
Рис. 4.5. К иллюстрации
многозначных зависимостей
Для примера рассмотрим таблицу
"Обучение" (рис. 4.5). В ней есть
многозначная зависимость
"Дисциплина-Преподаватель":
дисциплина (в примере Информатика)
может может читаться несколькими
преподавателями (в примере
Шипиловым и Голованевским). Есть и
другая многозначная зависимость
"Дисциплина-Учебник": при
изучении Информатики используются
учебники "Паскаль для всех" и
"Язык Си". При этом
Преподаватель и Учебник не
связныфункциональной
зависимостью, что приводит к
появлению избыточности (для
добавление еще одного учебника
придется ввести в таблицу две новых
строки). Дело улучшается при замене
этой таблицы на две:
(Дисциплина-Преподаватель и
Дисциплина-Учебник).
[Назад] [Содержание] [Вперед]
|