以下の機能的な依存関係との関係R[c, f, g, h, e, j, a, b, d, i]
を考慮して、以下の解決策を考え出しました。ただし、R8
にはLHSがいくらかあるものの、リストされている機能の依存関係がないことを考慮して、私はそれについて確信がありません。 BCNFへの分解の指示に従いましたが、これが正しい解決策かどうか確信が持てません。
a → b
{ c, a } → d
c → e
f → { g, h, i, j }
In BCNF:
R1[f, g, h, i, j]
R3[a, b]
R5[c, a, d]
R7[c, e]
R8[c, f, a]
あなたのソリューションは正しく、R8では正しくない依存関係はありません。
これは、BCNFの古典的ないわゆる「分析」アルゴリズムが、元の関係(および分解された関係)から、正規形に違反する依存関係を削除し、依存関係の左側のみを残して機能するために発生します。
この場合、アルゴリズムの最後に残る関係は{c, f, a}
では、重要な依存関係はありません(そのため、{c, f, a}
は、関係の唯一の候補キーです)。
これら3つの属性は、元のリレーションの候補キー(実際にはonly候補キー)でもあることに注意してください。
実際、損失のない分解を行うには、少なくとも候補キーのすべての属性を含む関係が必要であるという定理があります。
最後に、分解では機能的な依存関係も保持されることに注意してください(BCNFで分解するアルゴリズムでは、依存関係が失われた分解スキーマが生成される場合があるため、これは明らかではありません)。