4

次の機能依存関係があると仮定します。

AB -> C 
DEG -> H
A -> B
DG -> H

(G-(AB ->C) U (A -> C) = ACB である B+ の閉包により B を削除できることがわかります

最小限のカバーを見つけるために、DEG -> H、DG -> H に関する他の左側の冗長性にどのようにアプローチすればよいでしょうか。これらを減らすことができますか。

どうもありがとう、マシュー

4

1 に答える 1

3

これを行うには、いくつかのルールがあります。とても簡単です。機能依存セットは最小限です。

  1. 依存関係の右側に単一の属性しかない場合。と...
  2. 元のカバーを維持する方法で、削除できる機能依存関係はありません。と...
  3. 依存関係の左側から属性を削除して、元のカバーを維持することはできません

したがって、最小限のカバーを見つけている場合は、これらを確認する必要があります. もちろん、クロージャーを同等に保つ必要があります。

あなたが見てみると:

AB -> C 
DEG -> H
A -> B
DG -> H

冗長性を簡単に見つけることができます。DEG → H と DG → H の両方を含める意味はありません。なぜなら、DG → H は、DEG → H がカバーするすべてを既にカバーしているからです。だから、それを削除することができます。

それでも同等:

AB -> C 
A -> B
DG -> H

B は機能的に A に依存しているため、最初の行から B を削除できることがわかります。

それでも同等:

A -> C 
A -> B
DG -> H

最小限のカバーが見つかりました。クロージャーを維持するために依存関係を削除することはできません。右側には単一の属性のみがあり、左側には保持する必要がある唯一の二重属性である DG があります。D も G も削除せず、元のクロージャを維持することはできません。

これは、アームストロングの公理を使用して証明できます。元のセットを取得できれば、これは真に同等の最小セットです。(後で投稿します-正しいことを願っています。)

于 2012-10-27T07:28:39.757 に答える