как получить третью нормальную форму и разложения BCNF - PullRequest
0 голосов
/ 21 ноября 2011

Я пытаюсь произвести разложение схемы на 3NF и BCNF. Я смотрел на алгоритмы, но я очень смущен тем, как это сделать.

Если у меня есть минимальное покрытие, скажем: F' = {A->F, A->G, CF->A, BG->C), и я определил один ключ-кандидат для отношения, скажем, это A. Тогда что именно я делаю?

Я смотрел на примеры, у которых есть следующее:

F = {A → AB,A → AC,A → B,A → C,B → BC}

Минимальная обложка: F′ = {A → B,B → C}

И окончательный результат был: (AB,A → B), (BC,B → C). Как они дошли до этого?

1 Ответ

1 голос
/ 15 апреля 2012

Если у меня есть минимальное покрытие, скажем: F '= {A-> F, A-> G, CF-> A, BG-> C), и я определил один ключ-кандидат для отношения, скажемэто А. Тогда, что именно я делаю?

F '- не минимальное покрытие: вы должны объединить A-> F и A-> G в A-> FG

Даже ценность A не может быть ключом-кандидатом с учетом F ', поскольку B не принадлежит закрытию A. Возможным ключом-кандидатом будет AB.

Для 3NF вы начинаете с создания таблиц для каждой из зависимостей в F ', то есть

R1(A,F,G) R2(A,C,F) R3(B,C,G)

Затем вы проверяете, содержит ли одна из таблиц ключ-кандидат.Поскольку B появляется только в левой части зависимостей, B всегда должен быть частью ключа-кандидата.Единственная таблица с буквой B - это R3, и она не содержит ключей-кандидатов (проверьте это!).Следовательно, мы добавляем новую таблицу R4 с ключом-кандидатом в качестве атрибутов

R4(A,B)

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

Следовательно, наше 3NF-разложение

  R1(A,F,G) R2(A,C,F) R3(B,C,G)  R4(A,B)

Для BCNF вы начинаете с R (A, B, C, F, G) и смотритедля нарушений BCNF.

Например, A-> FG является нарушением BCNF, поскольку эта зависимость не тривиальна, а A не является суперключем.Следовательно, мы разбиваем R на

R1(A,F,G) and R2(A,B,C)

Ни одно из полученных соотношений не содержит нарушений BCNF, поэтому процесс здесь останавливается.

...