Если у меня есть минимальное покрытие, скажем: 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, поэтому процесс здесь останавливается.