2

ねえ、私は次のような課題を持っています:

R(ABCD) を関数従属性 A → B、C → D、AD → C、BC → A の関係とする R のボイス-コッド正規形 (BCNF) への無損失結合分解は次のうちどれですか?

私はYouTubeでビデオを調査して見てきましたが、これを開始する方法が見つからないようです。それをサブスキーマに分解し、テーブルに記入してどれがロスレスかを見つけることになっていると思いますが、それを始めるのに苦労しています。どんな助けでも大歓迎です!

4

1 に答える 1

11

あなたの質問

次のうち、R のボイス-コッド標準形 (BCNF) への無損失結合分解はどれですか?

オプションのセットがあり、それらのどれがロスレス分解であるかを選択する必要があることを示唆していますが、オプションについて言及していないため、最初に(パートA)関係をBCNFに分解し(最初に3NF、次にBCNF)、次に( PART B ) は、この特定の分解が無損失結合分解であるかどうかを確認する方法を示しています。特定の BCNF 分解が無損失かどうか、または私の回答のパート B に直接ジャンプしないかどうかを確認する方法を知りたいだけの場合。

パート A

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

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

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

R = {A,B,C,D}
FD = {A->B,C->D,AD->C,BC->A}

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

  • シングルトン RHS:指定されたすべての FD には、すでにシングルトン RHS があります。
  • 余分な LHS 属性がない:削除する必要がある余分な LHS 属性を持っている FD はありません。
  • 冗長 FD なし: 冗長 FDはありません。

したがって、与えられた FD のセットはすでに最小限のカバーです。

次に、それぞれFD独自のサブスキーマを作成します。これで - (各関係のキーは太字で示されています)

R 1 ={ A,D ,C}
R 2 ={ B,C ,A}
R 3 ={ C ,D}
R 4 ={ A ,B}

3 番目に、サブスキーマのいずれかを組み合わせることができるかどうかを確認します。R 1R 2はすでにすべての属性を持っているRため、R 3と R 4は省略できることがわかります。だから今、私たちは -

S 1 = {A,D,C}
S 2 = {B,C,A}

これは3NFにあります。ここで、BCNFをチェックするために、これらの関係 (S 1、S 2 ) のいずれかがBCNFの条件に違反しているかどうかをチェックします(つまり、すべての機能依存関係についてX->Y、左側 ( X)がスーパーキーでなければならない)。この場合、これらのいずれもBCNFに違反していないため、 BCNFにも分解されます。

パート B

上記のように Bernstein Synthesis を適用して分解するRと、分解は常に依存関係を維持します。ここで問題は、分解が無損失かどうかです。次の方法に従うことができることを確認するには:

図 1 に示すように、行数が分解されたリレーションの数に等しく、列数が元の所定の属性の数に等しいテーブルを作成しますR

ここに画像の説明を入力

図 1 のように、それぞれの分解された関係に存在するすべての属性にaを入れます。ここで、すべての FD の {C->D,A->B,AD->C,BC->A} を 1 つずつ調べます。可能な場合常にを追加してください。たとえば、最初の FD は C->D です。列 C の両方の行にaがあり、列 D の 2 行目に空のスロットがあるため、画像の右側に示すように、そこにaを配置します。行の 1 つが無損失分解であることを示すaで完全に満たされるとすぐに停止します。すべての FD を調べても、テーブルのどの行も a で完全に埋められない場合、それは非可逆分解です。

また、それが損失のある分解である場合、主キーのすべての属性からなる分解された関係のセットにもう 1 つの関係を追加することで、いつでも損失のない分解にできることに注意してください。

この方法の他の例については、このビデオをご覧になることをお勧めします。また、リレーショナル代数を含むロスレス結合分解をチェックする他の方法。

于 2015-12-18T11:37:04.880 に答える