2016-03-20 19 views
5

n個の属性R(A1、A2、...、An)を持つ関係スキーマRが与えられているとします。 Rのスーパーキーの最大数はいくらですか?あなたの答えを正当化してください。候補とスーパーキー

n個の属性R(A1、A2、...、An)を有する関係スキーマRが与えられたとする。 Rの可能な候補キーの最大数はいくらですか?あなたの答えを正当化してください。

私はまだ、これらの質問の両方に答える方法について疑問を抱いています。私が最初の質問の答えとして考えたのは、空集合が含まれていないため、(2^n)-1です。

第2の質問は、私の答えはnのatrributesだろう。

あなたはどう思いますか?

+0

候補キーの定義を考えてみましょう。これは属性のサブセットです(サブセット)。そのサブセットから属性を削除することはできません。結果の属性では、関係。あなたの質問のための重要な言葉は、「すべてのサブセット」です。それで、Rに属性のサブセットがいくつあるのですか?代わりに、最初の質問は明確ではありません。異なる*スーパーキーはいくつありますか?または、考えられる候補キーごとに可能なスーパーキーの数の合計? – Renzo

+0

@Renzoこの質問では、いくつの異なるスーパーキーがあるかを参照していると信じています – chosenman

+0

この場合、スーパーキーが他のすべての属性を特定する属性のサブセットであると考えると、スーパーキーの数は候補キーの数。 – Renzo

答えて

1

n個の属性に関連するスーパーキーの最大数は、可能なすべての属性の組み合わせの数になります。これは(2^n)-1であることが分かります。

これは何もなく、n個から

1属性(NC1)+ Nから2つの属性(NC2)+ ... + NCN =(2^n)を服用されていない-1

それとも次のように単純に考えることができます:私たちはそれぞれn個の属性をビットとして表現します。属性がスーパーキーの一部でなければ1を、それ以外の場合は0を設定できます。したがって、これは(2^n)になります。なぜなら、nビット/属性のそれぞれについて2つの選択肢(1または0)があるからです。すべての0を避けるために1を減算します。つまり、スーパーキーとして「属性なし」を考慮しています。したがって(2^n)-1。

この状況は、すべての属性が他のすべての属性を機能的に決定できる場合に発生します。これは、属性間の関数の依存関係のサイクルが存在する場合に発生します。リレーションR(A、B、C、D)が存在する場合、例えば、次にFDサイクルは次のようになります

A->B 
B->C 
C->D 
D->A 

superkeys合計A,B,C,D,(AB),(AC),(AD),(BC),(BD),(CD),(ABC),(ACD),(ABD),(BCD),(ABCD)を、あるだろう(2^4)-1 = 15

候補キーの最大数は、nCrが最大であるサイズrキーで発生します。言い換えれば、属性のすべてのサイズ-r組み合わせが候補キーである場合、候補キーの最大数が発生する。

これは上記の例から分かる。上のA,B,C,Dはすべて候補キーであるため、スーパーキー(たとえば(AB)、(BCD)または(ABCD)など)はいずれも候補キーではありません。同様に、任意の関係(AB)が候補キーである場合、そのスーパーキー(ABCまたはABDなど)のどれもが候補キーとなり得ない。

一般的に、nCfloor(n/2)は、n個の属性に関する関連する候補キーの最大数です。

PS:これは、候補キーが(依然として一意的に他のすべての属性を決定する機能/識別することができる、それを残してない属性は除去しないことができるから1)最小のスーパーキーであると定義を考慮

+1

説明が良いですが、最初の質問に対する答えは2^n-1ではなく2^nです。属性の空のセットは、スーパーキー(および定義によっては候補キー)であってもよい。 – sqlvogel

+0

"空の属性セットはスーパーキーかもしれません" !!!どうやって?あなたは論理的に説明することができ、技術的に/実際に説明できますか? – Mahesha999

+1

∅は任意のシングルトン関係のスーパーキーです。例えば'定数{pi、e、planck}'です。実際には、シングルトンテーブルは、パラメータまたは構成値、すなわち他の値に依存しないスカラー値に使用される。また、属性を全く持たない2つの関係DUMとDEEがあり、したがって∅の鍵を持っています。 – sqlvogel

1

最大数n個の属性を持つRのスーパーキーの数は2^nであり、Rの属性のパワーセットのサイズです。これは、∅(空の集合)が候補の鍵であり、∅がすべての属性の集合の部分集合であることを認識すると明らかです。

候補キーの最大数は、nC(n/2)(2項係数)によって与えられます。

関連する問題