私はMySQLが初めてであり、出会ったさまざまな用語について本当に混乱しています。私は答えをグーグルで試してみましたが、結果は本当に紛らわしく、私がそれを試して理解すると、それらは同じもののように見えます。
キー、スーパーキー、ミニマルスーパーキー、候補キー、プライマリキーの違いは何ですか?
ここで、収集した情報の一部をコピーして貼り付けます
キーキーは、単一のフィールドまたは複数のフィールドの組み合わせです。その目的は、要件に応じてテーブルのデータ行にアクセスまたは取得することです。キーはテーブルに定義されており、保存されたデータに迅速かつスムーズにアクセスまたはシーケンスします。また、異なるテーブル間のリンクを作成するためにも使用されます。
キーの種類
主キーリレーションの行またはレコードを一意に識別する属性または属性の組み合わせは、主キーと呼ばれます。
セカンダリキー検索の基礎となるフィールドまたはフィールドの組み合わせは、セカンダリキーと呼ばれます。セカンダリキーは一意ではないフィールドです。 1つのセカンダリキー値が多くのレコードを参照する場合があります。
候補キーまたは代替キーリレーションに含めることができる主キーは1つだけです。主キーとして使用できる多くのフィールドまたはフィールドの組み合わせを含めることができます。 1つのフィールドまたはフィールドの組み合わせが主キーとして使用されます。主キーとして使用されないフィールドまたはフィールドの組み合わせは、候補キーまたは代替キーと呼ばれます。
複合キーまたは連結キー 2つ以上の属性で構成される主キーは、複合キーと呼ばれます。
ソートまたは制御キーソートキーと呼ばれる保存されたデータを物理的に順序付けるために使用されるフィールドまたはフィールドの組み合わせ。また、制御キーとしても知られています。
スーパーキーは、データベースレコードを識別するために一意に使用できる属性の組み合わせです。テーブルには多くのスーパーキーがあります。候補キーは、余分な情報を持たないスーパーキーの特別なサブセットです。
スーパーキーの例:フィールド<Name>
、<Age>
、<SSN>
および<Phone Extension>
。このテーブルには、考えられる多くのスーパーキーがあります。これらのうち3つは<SSN>
、<Phone Extension, Name>
および<SSN, Name>
。リストされているもののうち、<SSN>
は候補キーです。他のレコードには、レコードを一意に識別するのに必要ではない情報が含まれているためです。
外部キー外部キーは、値が別の関係の主キーと一致する関係の属性または属性の組み合わせです。外部キーが作成されるテーブルは、従属テーブルと呼ばれます。外部キーが参照するテーブルは、親テーブルと呼ばれます。
私はいつもすべてのキーを覚えるのが難しいと感じました。以下のメモを手元に置いておきます。 改善できるかどうか教えてください。
Key:リレーショナルテーブル内のエンティティ/レコードを一意に識別する属性または属性の組み合わせ。
[〜#〜] pk [〜#〜]:一意でnullでない単一のキー。これは候補キーの1つです。
外部キー:FKは、あるテーブル(子)のキーで、別のテーブル(親)の行を一意に識別します。 FKは、子テーブルでは一意ではありません。親テーブルの候補キーです。 FKの値は親テーブルのPKの値として存在するため、参照整合性は維持されます。それ以外の場合はNULLです。
ユニークキー:NULLの場合とそうでない場合のあるユニークキー
天然キー:OLTPのPK。 OLAPのPKである可能性があります。
Surrogate Key:これは、OLAP OLTPのPKの代替として機能する代理PKです。生成された人工キーOLAPの内部。
複合キー:複数の属性で構成されるPK
SuperKey:データベースレコードを識別するために一意に使用できるキー。レコードを一意に識別するために必要ではない追加の属性を含めることができます。
候補キー:候補キーは、無関係なデータなしでデータベースレコードを識別するために一意に使用できます。ヌルではなく、ユニークです。最小限のスーパーキーです。
代替キー:主キーではない候補キーは、代替キーと呼ばれます。
外部データのある候補キー:Employeeテーブルのレコードを識別するために使用できるが、このタスクには候補キーだけで十分であると考えてください。したがって、外部データになります。
PK、外部キー、一意キー、自然キー、代理キー、複合キーはデータベースオブジェクトとして定義されていることに注意してください。 NaturalキーはOLTPのPKであり、ターゲットOLAPのPKである可能性があります。残りのキーについては、DBデザイナー/アーキテクトが一意かどうかを決定します-null /参照整合性制約を実施する必要があるかどうか。
以下では、集合論を使用して、キーw.r.tのメンバーシップの表現を簡略化しようとしました。お互い。
key = { All of the below keys }
PK = { PK }
Foreign Key = { Key with Not Null constraint }
Unique Key = { {Candidate Key/s}, {attributes containing NULL} }
Natural key = { PK }
Surrogate Key = { PK }
Composite Key = { PK }
Super Key = { {Candidate Key/s}, {Candidate Key/s with Extraneous data} }
Candidate Key = { PK, {Alternate Key/s} }
Alternate Key = { {Candidate Keys} - PK }
Candidate Key/s with Extraneous data = { }
以下に要約します。
主キーはスーパーキーのサブセットです。どれが一意に定義され、他のフィールドはそれに依存しています。テーブルでは、それらは1つの主キーであり、残りのサブセットは候補キーまたは代替キーです。
スーパーキー-リレーション内のタプルを一意に定義する属性または属性セット。ただし、スーパーキーには、一意の識別に必要ではない追加の属性が含まれる場合があります。
候補キー-適切なサブセットが関係内のスーパーキーではないようなスーパーキー。したがって、基本的に2つのプロパティがあります。各候補キーは、リレーションのTupleを一意に識別します。 &複合キーの適切なサブセットには一意性プロパティがありません。
複合キー-候補キーが複数の属性で構成される場合。
プライマリキー-リレーション内でタプルを一意に識別するために選択された候補キー。
代替キー-主キーではない候補キー。
外部キー-ある関係の候補キーと一致する関係内の属性または属性のセット。
大部分は受け入れられた答えに基づいていますが、いくつかのコースで教えられている定義をより良く適合させるためにいくつかの微調整があります:
スーパーキー:
データベース内のタプルを一意に識別するために使用される属性または属性セット。
候補キー:
主キー:
dBのレコードを一意に識別するために使用される候補キーの1つ
ヌルではない
候補キー:候補キーは、タプルを一意に識別できる属性の最小セットとして定義でき、候補キーとして知られています。たとえば、下のSTUDENTリレーションのSTUD_NO。
- 候補キーの値は、すべてのタプルに対して一意であり、nullではありません。
- リレーションには複数の候補キーが存在する場合があります。たとえば、STUD_NOとSTUD_PHONEはどちらもリレーションSTUDENTの候補キーです。
- 候補キーは、単純(属性が1つのみ)でも、複合キーでもかまいません。たとえば、{STUD_NO、COURSE_NO}は複合です
リレーションSTUDENT_COURSEの候補キー。
スーパーキー:タプルを一意に識別できる属性のセットは、スーパーキーと呼ばれます。たとえば、STUD_NO、(STUD_NO、STUD_NAME)など。候補キーに0個以上の属性を追加すると、スーパーキーが生成されます。候補キーはスーパーキーですが、その逆は当てはまりません。主キー:リレーションには複数の候補キーがあり、そのうちの1つを主キーとして選択できます。たとえば、STUD_NOとSTUD_PHONEはどちらもリレーションSTUDENTの候補キーですが、STUD_NOを主キーとして選択できます(多くの候補キーのうち1つのみ)。
代替キー:主キー以外の候補キーは、代替キーと呼ばれます。たとえば、STUD_NOとSTUD_PHONEはどちらもリレーションSTUDENTの候補キーですが、STUD_PHONEは代替キー(多くの候補キーのうち1つのみ)になります。
外部キー:属性が他の属性の値として存在する値のみをとることができる場合、属性はそれが属する属性への外部キーになります参照します。参照されているリレーションは被参照リレーションと呼ばれ、対応する属性は被参照属性と呼ばれ、被参照リレーションを参照するリレーションは参照リレーションと呼ばれ、対応する属性は参照属性と呼ばれます。参照属性の参照属性は主キーである必要があります。たとえば、STUDENT_COURSEのSTUD_NOは、STUDENTリレーションのSTUD_NOへの外部キーです。
スーパーキー:スーパーキーは、値がリレーションのタプルを一意に識別する1つ以上の属性のセットです。
候補キー:候補キーは、スーパーキーの最小サブセットとして定義できます。場合によっては、1つの属性だけが最小サブセットであるため、候補キーだけではできません。例、
従業員(id、ssn、name、addrress)
ここで、候補キーは(id、ssn)です。これは、idまたはssnを使用してTupleを簡単に識別できるためです。また、スーパーキーの最小サブセットはidまたはssnのいずれかです。ただし、両方とも候補キーと見なすことができます。
主キー:主キーは候補キーの1つです。
例:学生(ID、名前、部署、結果)
ここに
スーパーキー:{Id、Id + Name、Id + Name + Dept}スーパーキーは属性のセットであるため。
候補キー:IDだけがスーパーキーの最小サブセットであるため。
主キー:Idは候補キーの1つであるため