Нормализация в реляционных базах данных, понятие нормальной формы при проектировании баз данных.

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

Процесс преобразования отношений базы данных (БД) к виду, отвечающему нормальным формам, называется нормализацией. Нормализация предназначена для приведения структуры БД к виду, обеспечивающему минимальную логическую избыточность, и не имеет целью уменьшение или увеличение производительности работы или же уменьшение или увеличение физического объёма базы данных. Конечной целью нормализации является уменьшение потенциальной противоречивости хранимой в базе данных информации.

Общее назначение процесса нормализации:

исключение некоторых типов избыточности;

· устранение некоторых аномалий обновления;

· разработка проекта базы данных, который является достаточно «качественным» представлением реального мира, интуитивно понятен и может служить хорошей основой для последующего расширения;

· упрощение процедуры применения необходимых ограничений целостности.

19. 1НФ: Основные определения и правила преобразования.

Первая нормальная форма (1NF) базовая нормальная форма отношения в реляционной модели данных. Отношение находится в первой нормальной форме тогда и только тогда, когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов.

В реляционной модели отношение всегда находится в первой нормальной форме по определению понятия отношение.

Что же касается различных таблиц, то они могут не быть правильными представлениями отношений и, соответственно, могут не находиться в 1NF.

таблица нормализована (эквивалентно — находится в первой нормальной форме) тогда и только тогда, когда она является прямым и верным представлением некоторого отношения, кокретно:

Порядок строк не несет в себе никакой информации.

Порядок столбцов не несет в себе никакой информации.

Нет повторяющихся строк.

Каждое пересечение строки и столбца содержит ровно одно значение из соответствующего домена (и больше ничего).

Все столбцы являются обычными - в таблице нет «скрытых» компонентов, которые

могут быть доступны только в вызове некоторого специального оператора взамен ссылок на имена регулярных столбцов, или которые приводят к побочным эффектам для строк или таблиц при вызове стандартных операторов. Таким образом, например, строки не имеют идентификаторов кроме обычных значений потенциальных ключей (без скрытых «идентификаторов строк» или «идентификаторов объектов»). Они также не имеют скрытых временных меток



Сотрудник Номер телефона
Иванов И. И. 283-56-82 390-57-34
Петров П. П. 708-62-34

Таблица 3 Ненормализованная

Сотрудник Номер телефона
Иванов И. И. 283-56-82
Иванов И. И. 390-57-34
Петров П. П. 708-62-34

Таблица 4 Нормализованная

20. 2НФ: Основные определения и правила преобразования.

Отношение находится во второй нормальной форме, если оно находится в первой нормальной форме, и при этом любой его атрибут, не входящий в состав потенциального ключа, функционально полно зависит от каждого потенциального ключа. Функционально полная зависимость означает, что атрибут функционально зависит от всего составного потенциального ключа, но при этом не находится в функциональной зависимости от какой-либо из входящих в него частей. Или другими словами: в 2NF нет неключевых атрибутов, зависящих от части составного потенциального ключа.

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

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

Сотрудник Должность Зарплата Наличие компьютера
Гришин Кладовщик Нет
Васильев Программист Есть
Васильев Кладовщик Нет

Таблица 5 Сотрудник и должность - первичный ключ

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

Т.е. первичный ключ, как и в исходной таблице, составной, но единственный не входящий в него атрибут Зарплата будет зависит от всего ключа, то есть полно.

В результате приведения к 2NF получаются две таблицы:

Таблица 6 В рельтате приведения получаются 2 теблицы:

Сотрудник Должность Зарплата ## табл 2 -> Должность Наличие компьютера
Гришин Кладовщик ## табл 2 -> Кладовщик Нет
Васильев Программист ## табл 2 -> Программист Есть
Васильев Кладовщик ## табл 2 ->    

21. 3НФ: Основные определения и правила преобразования.

Согласно определению Кодда, отношение R находится в 3NF тогда и только тогда, когда выполняются следующие условия:

· Отношение R находится во второй нормальной форме.

· ни один неключевой атрибут R не находится в транзитивной функциональной зависимости от потенциального ключа отношения R.

Неключевой атрибут отношения R - это атрибут, который не принадлежит ни одному из потенциальных ключей R.

Функциональная зависимость множества атрибутов Z от множества атрибутов X (записывается XZ, произносится)является транзитивной, если существует такое множество атрибутов Y, что XY и YZ. При этом ни одно из множеств X, Y и Z не является подмножеством другого, то есть функциональные зависимости XZ, XY и YZ не являются тривиальными.

Понятное определение Билла Кента: каждый неключевой атрибут “должен предоставлять информацию о ключе, полном ключе и ни о чем, кроме ключа”. Условие зависимости от «полного ключа» неключевых атрибутов обеспечивает то, что таблица находится во второй нормальной форме. А условие зависимости их от «ничего, кроме ключа» — то, что они находятся в третьей нормальной форме.

Пример:

Сотрудник(ключ) Отдел Телефон отдела
Гришин Бухгалтерия 11-22-33
Васильев Бухгалтерия 11-22-33
Петров Снабжение 44-55-66

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

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

Зависимость Сотрудник → Телефон является транзитивной, следовательно, отношение не находится в 3NF.

В результате декомпозиции отношения R1 получаются два отношения, находящиеся в 3NF:

Отдел Телефон
Бухгалтерия 11-22-33
Снабжение 44-55-66
Сотрудник Отдел
Гришин Бухгалтерия
Васильев Бухгалтерия
Петров Снабжение

Исходное отношение R1 при необходимости легко получается в результате операции соединения отношений R2 и R3.

Наши рекомендации