Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_BD.doc
Скачиваний:
49
Добавлен:
17.09.2019
Размер:
1.74 Mб
Скачать

10.Реляционные модели. Нормальные формы отношений

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

1NF

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

Что же касается различных таблиц, то они могут не быть правильными представлениями отношений и, соответственно, могут не находиться в 1NF. Таблица нормализована (эквивалентно — находится в первой нормальной форме) тогда и только тогда, когда она является прямым и верным представлением некоторого отношения. Конкретнее, рассматриваемая таблица должна удовлетворять следующим пяти условиям:

  • Нет упорядочивания строк сверху-вниз.

  • Нет упорядочивания столбцов слева-направо.

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

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

  • Все столбцы являются обычными.

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

2NF

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

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

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

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

Сотрудник

Должность

Зарплата

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

Гришин

Кладовщик

20000

Нет

Васильев

Программист

40000

Есть

Васильев

Кладовщик

25000

Нет

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

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

Сотрудник

Должность

Зарплата

Гришин

Кладовщик

20000

Васильев

Программист

40000

Васильев

Кладовщик

25000

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

Должность

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

Кладовщик

Нет

Программист

Есть

3NF

Таблица находится в 3NF тогда и только тогда, когда выполняются следующие условия:

  • Отношение R (таблица) находится во второй нормальной форме;

  • Каждый непервичный атрибут находится в нетранзитивной (то есть прямой) зависимости от каждого ключа .

Непервичный (неключевой) атрибут R — это атрибут, который не принадлежит ни одному из возможных (альтернативных) ключей R. Транзитивная зависимость — это функциональная зависимость, при которой X → Z (X определяет Z) не напрямую, а посредством отношения X → Y и Y → Z (отношение Y → X не является обязательным условием).

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

Исходная таблица:

Фамилия

Отдел

Телефон

Гришин

Бухгалтерия

11-22-33

Васильев

Бухгалтерия

11-22-33

Петров

Снабжение

44-55-66

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

Отдел

Наименование отдела

Телефон

1

Бухгалтерия

11-22-33

2

Снабжение

44-55-66

Фамилия

Отдел

Гришин

1

Васильев

1

Петров

2

4NF

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

Пример

Предположим, что рестораны производят разные виды пиццы, а службы доставки ресторанов работают только в определенных районах города. Составной ключ таблицы такого отношения включает три поля: {Ресторан, Вид пиццы, Район доставки}.

Такая таблица не соответствует 4NF, так как существует многозначная зависимость:

{Ресторан} →→ {Вид пиццы}

{Ресторан} →→ {Район доставки}

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]