Нормализация отношений. Нормальные формы в БД

Базу данных определяют как нормализованную, если она удовлетворяет требованиям шести нормальных форм БД. На практике же считается, что база данных уже является нормализованной, если она удовлетворяет хотя бы третьей нормальной форме. Поэтому в данном материале рассмотрим только первые три нормальные формы.


Зачем нужна нормализация БД?

Цель нормализации: исключить избыточное дублирование данных, которое является причиной проблем, возникших при добавлении, редактировании и удалении записей.

Термины

Функциональная зависимость. Поле В таблицы функционально зависит от поля А той же таблицы в том и только в том случае, когда в любой заданный момент времени для каждого из различных значений поля А обязательно существует только одно из различных значений поля В. Отметим, что здесь допускается, что поля А и В могут быть составными.

Полная функциональная зависимость. Поле В находится в полной функциональной зависимости от составного поля А, если оно функционально зависит от А и не зависит функционально от любого подмножества поля А.

Нормальная форма — требование, предъявляемое к структуре таблиц в теории реляционных баз данных для устранения из базы избыточных функциональных зависимостей между атрибутами (полями таблиц).

Определение первой нормальной формы

Таблица находится в первой нормальной форме 1НФ тогда и только тогда, когда ни одна из ее строк не содержит в любом своем поле более одного значения и ни одно из ее ключевых полей не пусто.

Пример приведения отношения к первой нормальной форме

Исходная ненормализованная таблица:

Сотрудник

Номер телефона

Иванов И. И.

283-56-82
390-57-34

Петров П. П.

708-62-34

В поле номер телефона содержатся несколько значений, что не удовлетворяет определению первой нормальной формы.

Таблица, приведённая к 1НФ:

Сотрудник

Номер телефона

Иванов И. И.

283-56-82

Иванов И. И.

390-57-34

Петров П. П.

708-62-34

Определение второй нормальной формы

Таблица находится во второй нормальной форме 2НФ, если она удовлетворяет определению 1НФ и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом.

Пример приведения отношения ко второй нормальной форме

Пусть в следующем отношении первичный ключ образует пара атрибутов { Сотрудник, Должность}:

Сотрудник

Должность

Зарплата

Наличие компьютера

Гришин

Кладовщик

20000

Нет

Васильев

Программист

40000

Есть

Иванов

Кладовщик

25000

Нет

Зарплату сотруднику каждый начальник устанавливает сам (хотя её границы зависят от должности). Наличие же компьютера у сотрудника зависит только от должности, то есть зависимость от первичного ключа неполная.

В результате приведения к  2НФ исходное отношение следует декомпозировать на два отношения:

Сотрудник

Должность

Зарплата

Гришин

Кладовщик

20000

Васильев

Программист

40000

Иванов

Кладовщик

25000


Должность

Наличие компьютера

Кладовщик

Нет

Программист

Есть

Определение третьей нормальной формы

Таблица находится в третьей нормальной форме 3НФ, если она удовлетворяет определению 2НФ и не одно из ее неключевых полей не зависит функционально от любого другого неключевого поля.

Пример приведения отношения к третьей нормальной форме

Рассмотрим в качестве примера отношение, которое находится во  2НФ, но не соответствует 3НФ:

Сотрудник

Отдел

Телефон

Гришин

Бухгалтерия

11-22-33

Васильев

Бухгалтерия

11-22-33

Петров

Снабжение

44-55-66

В отношении атрибут «Сотрудник» является первичным ключом. Личных телефонов у сотрудников нет, и телефон сотрудника зависит исключительно от отдела.

Таким образом, в отношении существуют следующие функциональные зависимости: Сотрудник → Отдел, Отдел → Телефон, Сотрудник → Телефон.

В данной таблице присутствует функциональная зависимость между неключевыми полями Отдел → Телефон. Этот факт не удовлетворяет условию 3НФ.

В результате разделения таблицы получаются два отношения, находящиеся в 3НФ:

первое отношение

Отдел

Телефон

Бухгалтерия

11-22-33

Снабжение

44-55-66

второе отношение

Сотрудник

Отдел

Гришин

Бухгалтерия

Васильев

Бухгалтерия

Петров

Снабжение

Источники
http://www-sbras.nsc.ru/win/docs/db/rdbms/index.html http://www-sbras.nsc.ru/win/docs/db/rdbms/4-5.html https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B2%D0%B0%D1%8F_%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D0%B0
10:06
4.76K
Нет комментариев. Ваш будет первым!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.