次の機能依存関係を持つリレーション{A、B、C、D}の場合-
A -> BCD
B -> C
CD -> A
サイトの1つで見つけた特定の方法を使用して、候補キーをABCDとして取得しています。そうですか?正しい候補キーは何ですか?
次の機能依存関係を持つリレーション{A、B、C、D}の場合-
A -> BCD
B -> C
CD -> A
サイトの1つで見つけた特定の方法を使用して、候補キーをABCDとして取得しています。そうですか?正しい候補キーは何ですか?
ABCDは些細なスーパーキーです。すべてのアルゴリズムはABCDを生成する必要があります。しかし、ABCDはこの関係の候補キーではありません。定義上、候補キーは最小限のスーパーキーです。
簡単な検査で、リンクのアルゴリズムが不十分であることがわかります。候補キーとしてAは生成されませんが、A-> BCDが与えられるため、Aは明らかに候補キーです。Aの他に2つの候補キーがあります。
@ErwinSmoutによるこのSOの回答は、鉛筆と紙に適したアルゴリズムについて説明しています。ほとんどの教科書には、自動化に適したアルゴリズムが含まれています。
簡単にしましょう:これがスーパー候補キーの定義です
スーパーキー
スーパーキーは、キーのスーパーセットを表します。
スーパーキーは、集合的に取得され、他のすべての属性を一意に識別できる1つ以上の属性のセットです。
候補キー
候補キーは、適切なサブセットがスーパーキーではないスーパーキーです。
言い換えれば、候補キーは最小限のスーパーキーです。
クロージャープロパティにより、
A + = ABCD
以来
A->BCDが与えられました
A-> 再帰性ルール
したがって、Aは候補キーです。
お役に立てれば!