0

SO で BCNF を含む他の多くのスレッドを既に読んだことがありますが、関係とその機能依存関係のリストが与えられた場合に、関係が BCNF にあるかどうかを判断する関数をどのように記述するかについて、まだ少し混乱しています。

したがって、明らかに、FD のすべての入力と出力の結合が関係と等しくない場合、それは BCNF にはありませんが、それも明らかにチェックする必要があるすべてです。

So, say I'm given an input: 
R(A,B,C,D,E,F,G)
A->B
C,D->F
G->E

では、BCNF かどうかを判断するには、何を確認する必要がありますか?

4

1 に答える 1

8

X → Y各機能依存関係がスーパーキーである決定子( ) を持っている場合にのみ、関係は BCNF にありXます。つまり、関係の他のすべての属性を決定します。

これを観察するために、関数の依存関係のセットに関して行列式の「閉鎖」を計算できます。すべての属性が含まれている場合、それはスーパーキーです。

したがって、たとえば、あなたの例では、の閉包AAそれ自体に B を加えたものです。

A+ = AB

これは がAスーパーキーではなく、関係が BCNF にないことを意味します。実際、あなたの関係の唯一の鍵はA C D G.

于 2016-10-08T07:38:57.273 に答える