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