Нормальная форма

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

Содержание

Происхождение и назначение нормальных форм

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

В паре атрибутов одного отношения, X и Y, атрибут Y функционально зависит от атрибута X, если в данном отношении одному значению X соответствует в точности одно значение Y.

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

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

Типы нормальных форм

Нормализация может применяться к таблице, первоначально отвечающей следующим требованиям:

  • Таблица содержит нуль или более записей.
  • Все записи таблицы имеют одно и то же множество полей, причём одноимённые поля относятся к одинаковым типам данных.
  • Таблица не может содержать двух полностью идентичных записей.

Обычно выделяют шесть нормальных форм:

Первая нормальная форма (1NF)

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

Вторая нормальная форма (2NF)

Таблица находится во второй нормальной форме, если она находится в первой нормальной форме, и при этом любой её атрибут, не входящий в состав первичного ключа, функционально полно зависит от первичного ключа. Функционально полная зависимость означает, что атрибут функционально зависит от всего первичного ключа, но при этом не находится в функциональной зависимости от какой-либо его части.

Третья нормальная форма (3NF)

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

Нормальная форма Бойса-Кодда (BCNF)

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

Данная нормальная форма — это модификация третьей нормальной формы. Таблица может находиться в 3NF, но не в BCNF, только в одном случае: если она имеет, помимо первичного ключа, ещё по крайней мере один составной возможный ключ, и по крайней мере один из атрибутов таблицы входит и в первичный, и в возможный ключи. Такое бывает достаточно редко, в остальном 3NF и BCNF эквивалентны.

Четвёртая нормальная форма (4NF)

Таблица находится в 4NF, если она находится в BCNF и не содержит нетривиальных многозначных зависимостей. Многозначная зависимость не является функциональной, она существует в том случае, когда из факта, что в таблице содержится некоторая строка X, следует, что в таблице обязательно существует некоторая определённая строка Y.

Пятая нормальная форма (5NF)

Таблица находится в 5NF, если она находится в 4NF и любая многозначная зависимость соединения в ней является тривиальной.

См. также

Ссылки


СУБД

Концепции (Edgar Codd, Christopher Date, ...)
База данных | Database model | Реляционные базы данных | Реляционная модель данных | Реляционная алгебра | Первичный ключ - Внешний ключ - Суррогатный ключ - Superkey
Нормальная форма | Ссылочная целостность | Реляционные СУБД | Распределённые СУБД | ACID

Объекты
Триггер (Trigger) | Представление (View) | Таблица (Table) | Курсор (Cursor) | Лог транзакций | Транзакция | Индекс | Хранимая процедура | Partition

SQL (DCL, DDL, DML)
SELECT | INSERT | UPDATE | MERGE | DELETE | JOIN | UNION | CREATE | ALTER | DROP
Сравнение синтаксисов

Реализации систем управления базами данных

Типы реализаций
Flat file | Deductive | Dimensional | Иерархическая | Объектно-ориентированная | Temporal


Свободные системы
Firebird | Ingres | Kexi | MySQL | SQLite

Компоненты
Язык запросов | Оптимизатор запросов | План выполнения запроса | ODBC | JDBC

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home