0

ご縁があります

R = { A, B, C, D, E, F, G, H, I }

そして機能的な依存関係

F ={
ABC -> DE
E -> C
AB -> F
C -> G
F -> H
H -> IJ
F -> B
}

単純な BCNF 分解を行うことはできますが、これを分解することはできません。唯一の候補キーとして ABC があります。次に、それを 2 つの関係に分割して、BCNF を破る最初の FD を取り除き、次E -> Cの関係を与えます。

{ A, B, D, E, F, G, H, I, J } and { E, C }

しかし、すぐに最初の関係から候補キーを失いました。これは、最初のリレーションの新しい候補キーを見つけて、BCNF に違反するリレーションがなくなるまで、それを分解するプロセスを続行する必要があるということですか? 誰かがこの分解を解決する方法を教えてもらえますか?

編集:

わかりましたので、ここに私がやったことがあります:

私は現在持ってい{ A, B, D, E, F, G, H, I, J }ます{ E, C }

より大きな関係の新しい鍵を見つけました。この新しいキーはABDEG?

次に、BCNF に違反している箇所で関係を分割して分解を続けます。私が取った手順は次のとおりです。

{ A, B, D, E, F, G, H, I, J } // { E, C }

{ A, B, D, E, G, H, I, J } // { AB, F } // { E, C }

{ A, B, D, E, G, H, J } // { H, I } // { AB, F } // { E, C }

{ A, B, D, E, G, H } // { H, J } // { H, I } // { AB, F } // { E, C }

したがって、最後の行は私の最終結果です。それはBCNFにあるようですか?私の答えは正しいですか、正しく分解していますか?

4

1 に答える 1

2

私はあなたの結果を確認していませんが、目的が「BCNF である何かに分解する」ことであれば、あなたの結果は確かに正しいかもしれません。

これは、あなたの分解が選択するのに最も適しているという意味ではありません。

設計が BCNF にあるということは、それ自体が可能な限り最高であることを意味するわけではありません。

最も適切な分解に到達する可能性が最も高いのは、「絡み合い」が最も少ない FD から始めることです。たとえば、H->IJ は、I も J も他に言及されていないため、適切な候補です。

したがって、元のセットから「継承」されたそれぞれの FD を持つ {ABCDEFGH} と {HIJ} を取得します。

もう 1 つの有力候補は C->G です。つまり、{ABCDEFH} {CG} と {HIJ} を取得します。

もう一つ良いのは F->H です。{ABCDEF} {FH} {CG} と {HIJ} を得る。

いいえ、厄介な一連の FD ABC->DE E->C AB->F F->B が残っています。ここで、これらのうちの 1 つ選択し、他の FD が表現不能になるという結果を受け入れる必要があります。

しかし、これはあなたのソリューションが間違っているという意味ではありません(BCNF の結果を得ることに関する限り)。

于 2013-03-19T18:24:26.707 に答える