Чтобы привести отношение ко второй нормальной форме нужно сделать декомпозицию.
S# |
STATUS |
CITY |
S1 |
20 |
London |
S2 |
10 |
Paris |
S3 |
10 |
Paris |
S5 |
30 |
Athens |
S# |
P# |
QTY |
S1 |
P1 |
300 |
S1 |
P2 |
200 |
S1 |
P3 |
400 |
S2 |
P1 |
300 |
S2 |
P2 |
400 |
S3 |
P2 |
200 |
Таблица 1. Таблица 2.
Для отношения находящегося во второй нормальной форме также характерны аномалии операции обновления. Аномалии:
· Операция, для которой в таблице записывается новая запись INSERT. Аномалия – при вставке записи невозможно включение данных о некотором городе, обладающих некоторым STATUS.
· DELETE. При удалении записи кортежа для некоторого города будет удалена информация о статусе, который имел этот город.
· UPDATE. Значение статуса для города может повторяться несколько раз, что приводит к необходимости просматривать всю таблицу при изменении записи.
Для того, чтобы устранить эти аномалии, отношение необходимо привести к 3НФ.
3. 3НФ. Отношение находится в 3НФ, если оно находится во 2НФ и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
Номер поставщика определяет город, а город определяет STATUS. Таблица 2 (смотри ранее) уже находится в 3НФ. Приведем таблицу 1 к 3НФ:
S# |
CITY |
CITY |
STATUS |
|
S1 |
London |
London |
20 |
|
S2 |
Paris |
Paris |
10 |
|
S3 |
Paris |
Paris |
10 |
|
S5 |
Athens |
Athens |
30 |
При выполнении декомпозиции отношения, должны выполняться определенные условия для того, чтобы избежать потери информации. Эти условия определяются теоремой Хита.
Теорема Хита (Heath). Пусть R – это отношение с атрибутами А, В, С – R(A, B, C). Если R, удовлетворяет функциональной зависимости A→B, то R равно соединению его проекции по атрибутам (A,B) и (A,C).
Пример:
S# |
STATUS |
CITY |
S3 |
30 |
Paris |
S3 |
30 |
Athens |
Без потерь |
С потерями |
||
S# |
STATUS |
P# |
STATUS |
S# |
CITY |
STATUS |
CITY |
НФ Бойса-Кодда
На практике отношения могут иметь следующие свойства, которые не учитывались при рассмотрении первых трех НФ:
1. Отношение может иметь 2 и более потенциальных ключей.
2. Они являются сложными.
3. Два и более потенциальных ключа имеют по крайней мере один общий атрибут.
Пример:
Потенциальный ключ: S#, P#; SNAME, P#
S# |
SNAME |
P# |
QTY |
S1 |
Smith |
P1 |
300 |
S1 |
Smith |
P2 |
200 |
S1 |
Smith |
P3 |
400 |
S1 |
Smith |
P4 |
200 |
В отношении с такими свойствами могут также иметь место операции обновления. В рассмотренном примере при обновлении SNAME необходимо посмотреть все отношение. Это можно устранить, выполнив декомпозицию следующим образом:
(S#, SNAME) & (S#, P#, QTY)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.