属性ABCDEを持つ関係Rが与えられます。次の依存関係が与えられます:A-> B、BC-> E、およびED->A。私はすでにCDE、ACD、およびBCDである答えを持っています。私はそれを行う方法を知る必要があります。ありがとう。
4 に答える
候補キーは最小限のスーパーキーです。つまり、キーには余分な属性はありません。候補キーを見つけるための最初のステップは、すべてのスーパーキーを見つけることです。なじみのない方のために説明すると、スーパー キーは属性のセットであり、そのクロージャーはすべての属性のセットです。言い換えれば、スーパーキーは、開始できる属性のセットであり、機能的な依存関係に従うことで、すべての属性を含むセットにたどり着きます。
A -> B、BC -> E、および ED -> A という機能依存関係があるため、次のスーパーキーがあります。
- ABCDE (すべての属性は常にスーパー キーです)
- BCED (ED -> A を通じて属性 A を取得できます)
- ACDE (A から B を追加するだけ -> B)
- ABCD (BC から E を追加するだけ -> E)
- ACD (A -> B で B を取得でき、BC -> E で E を取得できます)
- BCD (BC -> E から E を取得し、ED -> A から A を取得できます)
- CDE (ED -> A から A を取得し、A -> B から B を取得できます)
(ここで理解すべきトリックの 1 つは、C と D が関数依存関係の右側に現れることはないため、すべてのキーに C と D の両方を含める必要があるということです)
すべてのスーパー キーが揃ったので、最後の 3 つのみが候補キーであることがわかります。最初の 4 つのすべてを削減することができますので。ただし、最後の 3 つのスーパーキーから属性を削除して、それらをスーパーキーのままにしておくことはできません。
したがって、候補キーは、ACD、BCD、および CDE です。
それが役立つことを願って、
候補キーを見つけるには、FD を Left、Middle、Right の属性に分割する必要があります - Left には、左側 (CD) にのみ表示される属性が含まれます - Middle には、左右の両方に表示される属性が含まれます ( ABE) - 右側には、右側にのみ表示される属性が含まれます (なし)
左からアトリビュートのクロージャを見つけます: * CD+ -> CD リレーションのすべてのアトリビュートを取得するわけではないので、Middle アトリビュート (ABE) を一度に 1 つずつ追加して、クロージャを再度見つけようとします。
* CDA+ -> CDABE (CDA は候補キー) * CDB+ -> CDBEA (CDB は候補キー) * CDE+ -> CDEAB (CDE は候補キー)
CD は候補キーなので、ACD、BCD、CDE はすべて候補キーになる可能性があります。C、D は機能依存関係の右側に表示されないため、CD は候補キーです。
これは理解するのに役立ちます。