web-dev-qa-db-ja.com

BCNF分解の場合、元の機能的な依存関係のどれとも関係がないことは問題ありませんか?

以下の機能的な依存関係との関係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]
5
Matt Hough

あなたのソリューションは正しく、R8では正しくない依存関係はありません。

これは、BCNFの古典的ないわゆる「分析」アルゴリズムが、元の関係(および分解された関係)から、正規形に違反する依存関係を削除し、依存関係の左側のみを残して機能するために発生します。

この場合、アルゴリズムの最後に残る関係は{c, f, a}では、重要な依存関係はありません(そのため、{c, f, a}は、関係の唯一の候補キーです)。

これら3つの属性は、元のリレーションの候補キー(実際にはonly候補キー)でもあることに注意してください。

実際、損失のない分解を行うには、少なくとも候補キーのすべての属性を含む関係が必要であるという定理があります。

最後に、分解では機能的な依存関係も保持されることに注意してください(BCNFで分解するアルゴリズムでは、依存関係が失われた分解スキーマが生成される場合があるため、これは明らかではありません)。

4
Renzo