これらの依存関係の BCNF 分解は何ですか?
A->BCD
BC->DE
B->D
D->A
答えにたどり着くまでのプロセスとは?
最初に関係R
を 3NF に変換し、次に BCNF に変換できます。
リレーションR
と一連の機能的な依存関係 ( FD's
)を変換するには、 Bernstein の Synthesis3NF
を使用できます。バーンスタインの合成を適用するには -
FD's
しますFD
を独自のサブスキーマにします。たとえば、あなたの場合:
R = {A、B、C、D、E}
FD = {A->BCD、BC->DE、B->D、D->A}
最初FD's
に、が最小限のカバーであるかどうかを確認します (シングルトンの右側、余分な左側の属性がない、冗長な FD がない)
C
FDBC->D
およびから無関係な LHS 属性を削除しますBC->E
。これで、FD は {A->B, A->C, A->D, B->D, B->E, B->D, D->A} のようになりました。次に、それぞれFD
独自のサブスキーマを作成します。これで - (各関係のキーは太字で示されています)
R 1 ={ A ,B}
R 2 ={ A ,C}
R 3 ={ B ,D}
R 4 ={ B ,E}
R 5 ={ D ,A}
3 番目に、サブスキーマのいずれかを組み合わせることができるかどうかを確認します。R 1とR 2には LHS があるため、それらを組み合わせることができます。同様に、 R3とR4を組み合わせることができる。だから今、私たちは -
S 1 = { A ,B,C}
S 2 = { B ,D,E}
S 3 = { D ,A}
これは3NFにあります。ここで、BCNFをチェックするために、これらの関係 (S 1、S 2、S 3 ) のいずれかがBCNFの条件に違反しているかどうかをチェックします(つまり、すべての機能依存関係についてX->Y
、左側 ( X
)がスーパーキーでなければならない)。この場合、これらのいずれもBCNFに違反していないため、 BCNFにも分解されます。