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

Нормальные формы БД. 1-я, 2-я, 3-я нормальные формы. Нормальная форма Бойса-Кодда.

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

Определение. Структура отношения r находится в 1 нормальной форме (1НФ), если каждое значение атрибута является атомарным.

Понятие атомарности означает, что значение атрибута является аьлмарным (неделимым) элементом информации, участвующим во всех приложениях этой базы данных. Например, значение атрибута «Дата приема на работу», равное ’25.07.2002’, является атомарным до тех пор, пока не требуется вырвать из этой даты год поступления сотрудника на работу или узнать полное число лет работы на текущую дату. Если такие запросы возможны, то следует разбить составной атрибут «Дата приема на работу» на простые атрибуты типа «Год поступления на работу» и т.д. Элемент является атомарным, если его нельзя разделить на части, которые могут использовать в таблице независимо друг от друга.

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

Основные критерии:

Пример не 1NF таблицы:

Категория Товары
Книги Война и Мир, Азбука
Игрушки Юла

В этом примере в одной из ячеек содержится список из двух элементов: Война и Мир, Азбука, т.е. он является не атомарным.

Исправить можно так:

Категория Товары
Книги Война и Мир
Книги Азбука
Игрушки Юла

Вот, теперь это таблица в первой нормальной форме.

Методы приведения к 1NF:

Устраните повторяющиеся группы в отдельных таблицах (одинаковые строки).

Создайте отдельную таблицу для каждого набора связанных данных.

Идентифицируйте каждый набор связанных данных с помощью первичного ключа (добавить уникальный id для каждой строки)

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

Основные требования:

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

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



Категория Дата Скидка Товар
Книги 10.10.2008 10% PHP for dummies
Ноутбуки 11.10.2008 20% Acer
Книги 10.10.2008 10% Windows XP

В этой таблице первичный ключ составляют первые два столбца (Категория и Дата).
Скидка функционально полно зависит от них обоих, так как определяется одновременно категорией и датой. А вот с товаром проблемы. Она зависит только от категории и не зависит от даты (в любой день будет лежать там, пока не купят). Поэтому, говорят, что он зависит функционально не полно от всего первичного ключа и функционально полно от его части (Категория). Это нарушает требования второй нормальной формы.

Исправляется это разделением этой таблицы на две другие:

Категория Дата Скидка
Книги 10.10.2008 10%
Ноутбуки 11.10.2008 20%
Книги 10.10.2008 10%

Категория Товар
Книги PHP for dummies
Ноутбуки Acer
Книги Windows XP

Вот и все. Теперь эти таблицы находятся во второй нормальной форме.

Методы приведения к 2NF:


6963617222325752.html
6963634518376875.html
    PR.RU™