今週はデータベースの中間試験があり、BCNF の違反を特定するのに苦労しています。私は関係を分解し、どれがキーでどれがスーパーキーかを見つける方法を知っています。暗示されている FD を書き出すこともできます。次のビデオを見ていました: https://www.youtube.com/watch?v=hTFyG5o8-EA .
要約すると、説明している女性は BCNF アルゴリズムを次の関係に適用し始めます (彼女は学生の例を使用していますが、簡略化するために文字に変換しました)。
R(A、B、C、D、E、F、G、H) と FD: A -> BCG、G -> H、D -> EF。
鍵が AD であることは承知しています。これは、AD+ = ABCDEFGH のクロージャーであるためです。彼女は、提示された FD はすべて違反であり、アルゴリズムの適用を開始すると述べています。
BCNF 試行 #1:
R1 = D -> EF (D+ = DEF) // 違反ではありませんが、なぜですか? ただの違反じゃないの?
R2 = ABCDEFG - (DEF - D) = ABCDGH // 違反、これも理由がわからない? 両方のキーが含まれています。
R2 での BCNF 試行 #2:
R3 = G -> H (G+ = GH) // 属性 GH が 2 つしかないため、違反はありません。
R4 = ABCDG // 違反ですが、理由はわかりません。
R4 での BCNF 試行 #3:
R5 = A -> BCG // 違反なし (?)
R6 = AD // 違反なし (?)
最終関係: R1、R2、R5、R6。