web-dev-qa-db-ja.com

SQLでは、複合キーですか、それとも複合キーですか?

SQLについて(コンピューティング/データベース):

テーブルに2つ以上のフィールドがあり、一緒にそのレコードを一意に識別する場合、それらを呼び出す適切な方法は何ですか?複合キーまたは複合キー?

私はウェブで両方の使用を見てきましたので、よくわかりません。

32
igordcard

複合キーと複合キーはどちらも、複数の属性を持つ候補キーを表します。 Relational Database Dictionary(C.J.Date)によると、これらは同じ意味です。

ERモデリングでは、「複合キー」という用語にも、より具体的な意味があります。これは、構成属性が他のエンティティのキ​​ーへの参照であるキーを意味します。つまり、複合キーは識別関係を形成します。ほとんどの場合、これは特に有用または重要な概念ではないので、複合/複合という用語は互換性があるものとして扱われることがよくあります。複合キーのERモデリングの概念に特に言及していない限り、「複合キー」に固執するのがおそらく最善です。

32
nvogel

http://en.wikipedia.org/wiki/Compound_key が参照されなかった理由はまだわかりません。それは非常に明確に述べています(そして正しいです):

データベース設計では、複合キーは、エンティティの発生を一意に識別する2つ以上の属性で構成されるキーです。複合キーを構成する各属性は、それ自体が単純なキーです。

これは、複合キーと混同されることがよくあります。これにより、エンティティの出現を一意に識別する2つ以上の属性で構成されるキーでもありますが、少なくとも複合キーを構成する1つの属性は、それ自体では単純なキーではありません。

複合キーは、外部キーである場合とそうでない場合がある要素で構成されています。例:トランザクションの詳細の表では、キーは(TransactionId、ItemNumber)です。トランザクションの詳細は、トランザクションのサブエンティティです。 TransactionIdは、Transactionsテーブルを参照する外部キーです。 ItemNumber自体はキーではありません。単一のトランザクションのコンテキスト内でアイテムを一意に識別するだけです。

複合キーは、キーの任意の部分が外部キーになるキーです。例:ホテル予約システムでは、予約には複合キー(GuestId、HotelId、ArrivalDate)があります。 GuestIdはゲストを識別し、Guestsテーブルを参照します。 HotelIdはホテルを識別し、Hotelsテーブルを参照します。 ArrivalDateは日付を識別します。参照する日付テーブルがある場合とない場合がありますが、どちらの方法でもエンティティ(日付)を識別します。

また、このファクトイドにも注意してください。単純なキーは1つの列で構成されるキーですが、複合キーは2つ以上の列で構成されます。

20
jcolebrand

英語では「複合キー」です。たとえば、MSDNのWebサイトを見てください(「SQL複合キー」を含む検索はすべて実行されます)。

http://www.google.com/search?q=sql+composite+key+site:msdn.Microsoft.com

質問がリレーショナルデータベースに関するものだとすると、私は Wikipedia で「中立」の定義を検索しました。

複合キーは、レコードを(一緒に)一意に識別する、テーブル内の2つ以上の属性で構成されるキーです。

3
Hemme

複合キーは、エンティティの出現を一意に識別するための複数の属性で構成されます。これは、キーを構成する1つ以上の属性がそれ自体では単純なキーではないという点で、複合キーとは異なります。

たとえば、CDコレクションを保持するデータベースがあるとします。エンティティの1つはトラックと呼ばれ、CD上のトラックの詳細を保持します。これには、CD名とトラック番号の複合キーがあります。

3
dilbag koundal

複合キーは複合キーを含むスーパーセットのように思えます。複合キーが(任意の種類の)複数の属性で構成され、複合キーが複数の単純なキーで構成されることを受け入れる場合。複合キーは、より具体的な意味を持つ複合キーの一種ですが、「複合」キーという用語は常に適切に使用できます。

2
Tom Gnade