Предположим, что 'wiki' является отношением R
, а его атрибуты url,title,..heading_pos равны A,B,...H соответственно.
У нас есть,
R = {A,B,C,D,E,F,G,H}
FD's = {A->BC, E->F, AH->G}
Ключевым моментом здесь является ADEH.
Мы можем сначала преобразовать отношение R
в 3NF, а затем в BCNF.
Чтобы преобразовать отношение R
и набор функциональных зависимостей (FD's
) в 3NF
, вы можете использовать синтез Бернштейна. Чтобы применить синтез Бернштейна -
- Сначала мы убеждаемся, что заданный набор
FD's
является минимальным покрытием.
- Во-вторых мы берем каждый
FD
и делаем его собственной подсхемой.
- В-третьих, мы пытаемся объединить эти подсхемы
Например в вашем случае:
Сначала мы проверяем, является ли FD's
минимальным покрытием (одноэлементная правая сторона , нет постороннего атрибута левой стороны, нет избыточного FD)
- Singleton RHS: мы пишем FD с singleton RHS. Итак, теперь у нас есть FD как {A-> B, A-> C, E-> F, AH-> G}
- Нет лишнего атрибута LHS. Мы удаляем лишние атрибуты LHS, если они есть. Никаких посторонних атрибутов LHS здесь нет.
- Никаких избыточных FD: мы удаляем избыточные зависимости, если таковые имеются. Здесь нет лишних зависимостей.
Во-вторых, мы создаем для каждой FD
собственную подсхему. Итак, теперь у нас есть - (ключи для каждого отношения выделены жирным шрифтом)
R1={A,B}
R2={A,C}
R3={E,F}
R4={A,H,G}< бр>
В-третьих, мы объединяем все подсхемы с одним и тем же LHS. Итак, теперь у нас есть -
S1 = {A,B,C}
S2 = {E,F}< br> S3 = {A,H,G}
Поскольку ни одно из приведенных выше декомпозированных отношений не содержит ключа R, нам необходимо создать дополнительную схему отношения, содержащую атрибуты, образующие ключ R. Это необходимо для обеспечения декомпозиции соединения без потерь, которая сохраняет зависимости. Итак, мы добавляем -
S4 = {A,D,E,H}
Это в 3NF. Теперь, чтобы проверить BCNF, мы проверяем, есть ли какие-либо из этих отношений (S1,S2,S3, S4) нарушают условия BCNF (т. е. для каждой функциональной зависимости X->Y
левая часть (X
) имеет быть суперключом). В этом случае ни один из них не нарушает BCNF, и, следовательно, он также разлагается на BCNF.
Примечание. В этом примере важность некоторых из этих шагов может быть неясна. Посмотрите другие примеры здесь и здесь.
person
Karup
schedule
29.03.2016