どんな種類の魂でも、以下の簡単な例で私の疑問を明確にし、スーパーキー、候補キー、および主キーを特定できますか?
私はそれらの間の違いを説明する多くの投稿やウェブサイトがあることを知っています。しかし、すべてが一般的な定義のようです。
例:
Student (StudentNumber, FamilyName, Degree, Major, Grade, PhoneNumber)
したがって、上記の例から、StudentNumber
が主キーであることがわかります。
しかし、スーパーキーについては、どの属性の組み合わせをスーパーキーにグループ化できるか少し混乱していますか?
候補キーについては、どの候補キーも主キーとして適格である可能性があるため、定義に戸惑っています。
PhoneNumber
などの属性は候補キーであり、主キーになり得るということですか? (PhoneNumber
は1人の生徒のみに属すると仮定)
明確化をありがとう!
大まかに言って、教科書の定義は必要ないので、スーパーキーは行を一意に定義する列のセットです。
このセットには1つ以上の要素を含めることができ、テーブルには複数のスーパーキーが存在する場合があります。通常、これは機能的な依存関係を介して行います。
あなたの例では、私は仮定しています:
StudentNumber unique
FamilyName not unique
Degree not unique
Major not unique
Grade not unique
PhoneNumber not unique
この場合、スーパーキーは、学生番号を含む任意の組み合わせです。
以下はスーパーキーです
StudentNumber
StudentNumber, FamilyName
StudentNumber, FamilyName, Degree
StudentNumber, FamilyName, Degree, Major
StudentNumber, FamilyName, Degree, Major, Grade
StudentNumber, FamilyName, Degree, Major, Grade, PhoneNumber
StudentNumber, Degree
StudentNumber, Degree, Major
StudentNumber, Degree, Major, Grade
StudentNumber, Degree, Major, Grade, PhoneNumber
StudentNumber, Major
StudentNumber, Major, Grade
StudentNumber, Major, Grade, PhoneNumber
StudentNumber, Grade
StudentNumber, Grade, PhoneNumber
StudentNumber, PhoneNumber
ここで、PhoneNumberが一意である場合(最近電話を共有している場合)、次のものも(上記にリストしたものに加えて)スーパーキーであると仮定します。
PhoneNumber
PhoneNumber, Grade,
PhoneNumber, Major, Grade
PhoneNumber, Degree, Major, Grade
PhoneNumber, FamilyName, Degree, Major, Grade
PhoneNumber, Major
PhoneNumber, Degree, Major
PhoneNumber, FamilyName, Degree, Major
PhoneNumber, StudentNumber, FamilyName, Degree, Major
PhoneNumber, Degree
PhoneNumber, FamilyName, Degree
PhoneNumber, StudentNumber, FamilyName, Degree
PhoneNumber, FamilyName
PhoneNumber, StudentNumber, FamilyName
候補キーは、単に「最短の」スーパーキーです。スーパーキーの最初のリストに戻ると(つまり、電話番号は一意ではありません)、最短のスーパーキーはStudentNumberです。
主キーは通常、候補キーにすぎません。
スーパーキーは、値がテーブル内のすべての可能なタプルセットに対して常に一意であることが保証されている属性のセットです。
候補キーは「最小」スーパーキーです-一意のスーパーキー属性の最小サブセットを意味します。したがって、候補キーから属性を削除すると、一意ではなくなります。
主キーは単なる候補キーです。主キーと他の候補キーの間に違いはありません。
属性名のリストのみに基づいてキーについて推測することは、実際には役に立ちません。属性間でどの依存関係が保持されるはずかを知る必要があります。そうは言っても、私はあなたが正しいと思います-StudentNumberはおそらくあなたの例の候補キーです。
PhoneNumber
がStudentNumber
とともに一意でもある場合、Cambiumの答えを引き伸ばすと、candidate keys
は次のようになります。-{StudentNumber}
、{PhoneNumber}
.
ここでは、{StudentNumber,PhoneNumber}
を単一のcandidate key
と想定することはできません。なぜなら、1つの属性を省略するとStudentNumber
と言うので、一意のattribute{PhoneNumber}
が得られるためです。 candidate key
の定義。Primary key:
すべてのcandidate key
からcandidate keys
を1つ選択します。 candidate keys
が2つあるので、{StudentNumber}
としてprimary key
を選択できます。Alternate keys:
残りcandidate keys
は、primary key
からcandidate keys
を選択した後、代替キー、つまり{PhoneNumber}
です。
compound key:
複合キーは、エンティティオカレンスを一意に識別する2つ以上の属性で構成されるキーです。単純なキーとは、属性を1つだけ持つキーです。複合キーは、他の一意の単純キーと非キー属性で構成できますが、別の複合キーを含めることはできません。
composite key:
複合キーには、少なくとも1つの複合キーともう1つの属性が含まれます。複合キーには、単純キーと非キー属性も含まれる場合があります。