web-dev-qa-db-ja.com

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

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

私はこの主要なビジネスと本当に混乱しており、グーグルした後、私が得ていない2つのキー(主キーとスーパーキー)に絞り込みました。

DBMSについていくつか質問があります。答えて頂ければありがたいです。

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

2)主キーとスーパーキー両方主キーとスーパーキーを形成するために複数の列を組み合わせることができますか?

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

22
MikeHil

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

Primary Keyは最小限のCandidate Keyです。つまり、一意性を確保するためには、すべての構成列が厳密に必要です。

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

24
Pieter Geerkens

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

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

Book (BookId, BookName, Author)

この表では、

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

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

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

   (BookId)
   (BookName,Author)

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

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

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

17
Payal Trivedi

From this stackoverflow.com answer of mine

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

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

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

From this stackoverflow.com answer of mine re a given table:

列XとYのセットの場合、X-> Yと記述できます。 Xは決定されたセットであり、Yは決定されたセット of/in 機能依存性[〜#〜] fd [〜#〜])X-> Y。

X 機能的に決定する YおよびY 機能的に決定する Xと言います。Xは決定要因 X-> Yと言います。In{C }-> YはC 機能的に決定する Yと言います。X-> {C}はX 機能的に決定する Cと言います。XがYのスーパーセットである場合、X- > Yは自明です。

X-> Y holds in Xの値の各サブ行がYの値の同じサブ行で常に/のみ表示される場合、テーブルTと言います。または、Xと言います-> YはFDですof/in T.XがテーブルTの一部のFDの行列式である場合、Xと言いますは/ inの行列式です T。

テーブルのsuperkey Tは、すべての属性を機能的に決定する列のセットです。 候補キー[〜#〜] ck [〜#〜])は、小さなスーパーキーを含まないスーパーキーです。主キー[〜#〜] pk [〜#〜])として1つのCKを選択し、他のCKを呼び出す代替キー。あるCKにある場合、列はprimeです。

(そこでコメントしたように、「FD、hold、superkey、CKの4つの太字の文で十分だったでしょう。」)

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

2
philipxy

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

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

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

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

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

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

並べ替えまたは制御キー並べ替えキーと呼ばれる格納されたデータを物理的に順序付けるために使用されるフィールドまたはフィールドの組み合わせ。制御キーとも呼ばれます。

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

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

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

Minimal Super keyについては、このリンクを参照してください。そこでより明確になります http://www.answers.com/topic/superkey-1

1
Ved Prakash