0

これらの依存関係の BCNF 分解は何ですか?

A->BCD
BC->DE
B->D
D->A

答えにたどり着くまでのプロセスとは?

4

1 に答える 1

0

最初に関係Rを 3NF に変換し、次に BCNF に変換できます。

リレーションRと一連の機能的な依存関係 ( FD's)を変換するには、 Bernstein の Synthesis3NFを使用できます。バーンスタインの合成を適用するには -

  • まず、与えられた のセットが最小限のカバーであることを確認FD'sます
  • 次に、それぞれFDを独自のサブスキーマにします。
  • 3番目に、これらのサブスキーマを結合しようとします

たとえば、あなたの場合:

R = {A、B、C、D、E}
FD = {A->BCD、BC->DE、B->D、D-​​>A}

最初FD'sに、が最小限のカバーであるかどうかを確認します (シングルトンの右側、余分な左側の属性がない、冗長な FD がない)

  • シングルトン RHS: シングルトン RHSで FD を書き込みます。これで、FD は {A->B, A->C, A->D, BC->D, BC->E, B->D, D->A} になりました。
  • 無関係な LHS 属性なし:C FDBC->Dおよびから無関係な LHS 属性を削除しますBC->E。これで、FD は {A->B, A->C, A->D, B->D, B->E, B->D, D->A} のようになりました。
  • 冗長な FD がない:冗長な依存関係を削除します。現在、FD は {A->B, A->C, B->D, B->E, 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 1R 2には LHS があるため、それらを組み合わせることができます。同様に、 を組み合わせることができる。だから今、私たちは -

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にも分解されます。

于 2015-12-19T13:31:17.313 に答える