web-dev-qa-db-ja.com

候補キーと複合キーの違いは何ですか?

候補キーと複合キーについて読んでいます。それを知った

  • 候補キーは主キーとして修飾でき、単一の列または列の組み合わせにすることができます
  • 複合キーも列の組み合わせです。

複合キーについては、このリンクを参照しました

SQL Server Management Studioで複合キーを作成する方法

したがって、候補キーと複合キーの両方が列の組み合わせである場合、それらは主キーとして修飾できます。それでは、正確な違いは何ですか?例で説明してもらえますか?

20

私が知っているように、候補キーは主キーとして使用できる一意のキーです。ただし、必ずしも1つとして使用されるわけではありません。

複合キーは、行を一意に識別する2つ以上の属性のキーです。

15
Headshota

キーは、テーブル内の各行を一意に識別するために使用できる列のセットです。

すべてのテーブルには少なくとも1つのキーがあります。テーブルに可能なキーをそれぞれ特定したとしましょう。これらのキーはそれぞれ候補キーです。

これらの各キーを調べると、キーは列(!)、1列、または複数の列で構成されている可能性があります。これらは一緒に検討すると、各行を一意に識別します。複合キーという用語は、特に複数の列で構成されるキーを指します。

SQLでは、1つのキーを選択し、テーブルの他のキーよりも「同等」に扱うことが決定されました。このキーは主キーと呼ばれます。他のキーもテーブルで宣言できます。これらは通常、一意の制約と呼ばれます。

(!)SQLでは、列のないキーを宣言することは許可されていません-時には役に立つかもしれません(各列が構成情報を表す単一の行のみを持つべきテーブルを考えてください)


複数のキーを持つテーブルの例として、それらはすべてコンポジットです。クライアントとカウンセラーが特定の時間に部屋で会う予約システムを想像してください。

CREATE TABLE Appointments (
    ClientID int not null,
    CounsellorID int not null,
    RoomID int not null,
    AppointmentTime datetime not null
)

このテーブルの候補キーは{ClientID、AppointmentTime}、{CounsellorID、AppointmentTime}および{RoomID、AppointmentTime}です。これらの列の組み合わせを使用して、テーブル内の行を一意に識別できます。これらはすべて複合キーです。

どのキーを主キーとして宣言するかは、(おそらく)システムのメイン「フォーカス」の独自の解釈に依存します。主に部屋の使用、またはクライアント、またはカウンセラーに関心がありますか?いずれの場合でも、1つを選択し、それを主キーとして宣言します。また、他のキーを一意の制約として宣言することもできます。

または、データベースで使用可能な自動番号付け機能を使用して、サロゲートを使用してAppointmentID列を宣言することもできます。これが(非複合)主キーになる可能性があります。ただし、テーブルの他のキーはまだ宣言する必要があります。

15

候補キー:主キーフィールドの候補者は、候補キーと呼ばれます。

複合キー:複数の主キーを作成することは、複合キーと呼ばれます。

更新:候補キーは、主キーとして使用できる一意のキーです。複合キーは、行を一意に識別する2つ以上の属性のキーです。キーは、テーブル内の各行を一意に識別するために使用できる列のセットです。

6

CANDIDATE KEY:-候補キーは一意のキーであり、主キーになるための「候補」です。 COMPOSITE KEY:-主キーとしての2つ以上の列の「構成」は、複合キーと見なされます。

4
KamalDeep

候補キーとは、主キーとしてcouldを使用する列または列の組み合わせ、つまり候補または潜在的な主キー、複合キーは定義により2つ以上の列です行を識別するために使用されます。最も一般的には、複合キーについて話すとき、問題は、代わりに代理キーを持つためにそれを主キーとして持つかどうかです。場合によっては、人々が主キーではない(つまり、すべての行に対して一意ではない)複合キーを参照することを聞くことがあります。フィールド(クロス結合を行い、where句の行をフィルタリングする代わりに)。

2
jmoreno