DBMSの主キーとスーパーキーの違いは何ですか


20

私はDBMSに不慣れで、まだ理論を学んでいます。

私はこの重要なビジネスに本当に混乱しており、グーグルで検索した後、取得できない2つのキー(プライマリキーとスーパーキー)に絞り込みました。

DBMSに関していくつか質問があります。あなたが私のためにそれらに答えることができれば私は感謝するでしょう。

1)DBMSのプライマリキーとスーパーキーの違いは何ですか? 包括的な例を使用して適切に説明できる場合は、高く評価してください

2)プライマリキーとスーパーキーの両方に複数の列を組み合わせて、プライマリキーとスーパーキーを形成できますか?

3)主キーはスーパーキーのサブセットですか、またはその逆ですか?


1
多くの点で重要な点は、タプル(行)自体がスーパーキーであることです。行を一意に識別できる、つまり特定の値の組み合わせを含むタプルを一意に識別できるようにすることを目的としているため、そのための1つの方法は、すべての値を利用可能にすることです。したがって、タプル内の値がわかれば、その値を持つタプルを見つける方法を明確に知ることができるため、タプルはそれ自体のスーパーキーになります。最初は馬鹿げているように見えますが、タプルのスーパーキーになる可能性のあるもの、つまりタプル自体の上限を設定します。
デイブ

@Daveリレーション/テーブルのすべての列名のセット(したがって、各タプル/行)はそのスーパーキーです。「タプル(行)自体」ではありません。
philipxy

@philipxyあなたは正しいです、私は間違って話しました-私は訂正します。説明を追加していただきありがとうございます。
デイブ

回答:


23

A スーパーキーは、単に非最小となる候補キー厳密行の一意性を確保するために必要ではない追加の列を持つものを言うことです。

A 主キーは最小限である候補キーを構成するすべての列が厳密に一意性を確保するために必要とされていると言うことです。

30年の経験を持つデータベース開発者/設計者として、この質問を見て調べてみるまで、スーパーキーという言葉を聞いたことがありませんでした。Super Keyの概念は、クエリカバーを改善するための追加の列を持つ一意の非クラスター化インデックスの概念に直接マップされるため、パフォーマンスと物理スキーマ設計のトピックにより密接な関係があるようです。


3
これは非常に不正確です。適切なスーパーキー、スーパーキー、CKの代わりにスーパーキー、CK、PKを使用しています。スーパーキーは一意のセットです。(CKは「最小」スーパーキーです。「最小CK」という概念はありません。すべてのCKはスーパーキーです。したがって、スーパーキーはCKよりも多くの列を持つ必要はありません。PKはPKを呼び出すCKです。 「最小CK」でなければならない場合、「最小」は「任意」を意味する必要があります。)SQL PK&UNIQUE NOT NULLはスーパーキーを宣言します。(SQL PKはPKである場合とそうでない場合があります。)CKの定義にはスーパーキーが重要です。CKは正規化を含む設計に重要です。私の答えをご覧ください。
-philipxy

1
さらに、
ボイスコッド

16

スーパーキー:スーパーキーは、キーのスーパーセットを表します。スーパーキーは、集合的に取得される1つ以上の属性のセットであり、他のすべての属性を一意に識別できます。

たとえば、テーブルがあります

Book (BookId, BookName, Author)

したがって、この表では

   (BookId)
   (BookId,BookName)
   (BookId, BookName, Author)
   (BookId, Author)
   (BookName, Author)

スーパーキーとして。各スーパーキーは、各タプル(レコード)を一意に識別できます。

候補キー候補キーは、冗長な属性を持たないスーパーキーです。つまり、候補キーは最小限のスーパーキーです。たとえば、上の図で

   (BookId)
   (BookName,Author)

残りのキーには冗長属性があるため、これら2つのキーは候補キーになります。スーパーキー(BookId、BookName)レコードの手段は、bookidだけで一意に識別できるため、Booknameは冗長属性です

主キー:エンティティセット内のエンティティを識別するためにデータベース設計者が選択する候補キーです。OR各レコードを一意に識別するために使用されるキーは、主キーと呼ばれます。

上記の候補キーから、どれでも主キーにできます。そして、主キーとして選択されていない別のキーは、代替キーとして認識されます


これは質問に答え、賛成に値します。
srk

また、別の名前は同じでalternative keyあるsecondary keyことに注意してください。素晴らしい答えです!
ワエルアルシャバニ

2

私のこのstackoverflow.comの答えから:

候補キーは、行を一意に識別する列のセットであり、行を一意に識別する列のより小さな(「適切な」)サブセットは含まれません。

スーパーキーは、行を一意に識別する一連の列です。したがって、候補キーは、より小さなスーパーキーを含まないスーパーキーです。

SQLでは、空の候補キーを宣言できません。また、UNIQUE NOT NULLおよびPRIMARY KEY(制約の観点からUNIQUE NOT NULLを意味する)は、キー自体ではなくスーパーキーを宣言します。そのような宣言の列セットにスーパーキーとして宣言されたより小さい列セットが含まれていない場合、宣言しているスーパーキーは候補キーです。

私のこのstackoverflow.comの答えから、特定のテーブルを再作成してください:

列XとYのセットに対して、X-> Yと書くことができます。我々はXであると言う決定因子セットとYが決定されたセットに/の関数従属性FD)X - > Y.

Xは機能的に Yを決定し、Y は機能的に X によって決定されると言います。XはX-> Yの行列式です。{C}-> YではCは機能的に Yを決定します。X-> {C}ではX 機能的に Cを決定します。XがYのスーパーセットである場合、X-> Yは自明です。

X の値の各サブ行がYの値の同じサブ行で常に/のみ現れる場合テーブルT X-> Y が成立すると言います。または、X-> YはTのFD です。Xが行列式の場合テーブルTの一部のFDのX T の決定因子であると言います。

スーパーキーテーブルTのは、機能的にすべての属性を決定する列のセットです。候補キーCKは)小さくないスーパーキーが含まれているスーパーキーです。1つのCKを主キーPK)として選択し、他のCKの代替キーを呼び出すことができます。CKにある列はプライムです。

(私がそこでコメントしたように、「FD、ホールド、スーパーキー、CKの4つの太字の文章で十分でしょう。」)

(空のCKを持つテーブルは、最大で1つの行を含むように制限されます。空のセットによって決定される列セットは、すべての行に同じサブ行値を持つように制限されます。)


1

キーキーは、単一のフィールドまたは複数のフィールドの組み合わせです。その目的は、要件に応じてテーブルのデータ行にアクセスまたは取得することです。キーはテーブルに定義されており、保存されたデータに迅速かつスムーズにアクセスまたはシーケンスします。また、異なるテーブル間のリンクを作成するためにも使用されます。

キー種類次の表または関係を使用して、さまざまな種類のキーを定義します。

主キーリレーション内の行またはレコードを一意に識別する属性または属性の組み合わせは、主キーと呼ばれます。

セカンダリキー検索の基礎となるフィールドまたはフィールドの組み合わせは、セカンダリキーと呼ばれます。セカンダリキーは一意ではないフィールドです。1つのセカンダリキー値が多くのレコードを参照する場合があります。

候補キーまたは代替キーリレーションに含めることができる主キーは1つだけです。主キーとして使用できる多くのフィールドまたはフィールドの組み合わせを含めることができます。1つのフィールドまたはフィールドの組み合わせが主キーとして使用されます。主キーとして使用されないフィールドまたはフィールドの組み合わせは、候補キーまたは代替キーと呼ばれます。

複合キーまたは連結キー2つ以上の属性で構成される主キーは、複合キーと呼ばれます。

ソートまたは制御キーソートキーと呼ばれる保存データを物理的に順序付けるために使用されるフィールドまたはフィールドの組み合わせ。コントロールキーとも呼ばれます。

スーパーキー一意のデータベースレコードを識別するために使用できる属性の組合せです。テーブルには多くのスーパーキーがあります。候補キーは、余分な情報を持たないスーパーキーの特別なサブセットです。

スーパーキーの例: Name、Age、SSN、および<Phone Extension>の各フィールドを持つテーブルを想像してください。このテーブルには、考えられる多くのスーパーキーがあります。これらの3つは、SSN、内線番号、および名前です。リストされているもののうち、SSNのみが候補キーです。他のキーには、レコードを一意に識別するのに必要ではない情報が含まれています。

外部キー外部キーは、別のリレーションのプライマリキーと値が一致するリレーションの属性または属性の組み合わせです。外部キーが作成されるテーブルは、従属テーブルと呼ばれます。外部キーが参照するテーブルは、親テーブルと呼ばれます。

以下のための最小限のスーパーの鍵、それがより明確になり、このリンクを参照してくださいhttp://www.answers.com/topic/superkey-1

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.