主キーは、特定のテーブルに対して選択された候補キーであるということですか?
11 に答える
Candidate Key
– 候補キーは、データベース内の一意のキーとして修飾できる任意の列または列の組み合わせにすることができます。1 つのテーブルに複数の候補キーを含めることができます。各候補キーは、主キーとしての資格を得ることができます。
Primary Key
– 主キーは、レコードを一意に識別する列または列の組み合わせです。主キーにできる候補キーは 1 つだけです。
ジョン・ウーの答えは正しい。ここで、いくつかの追加ポイントを示します。
主キーは、常に候補キーの 1 つです。多くの場合、それが唯一の候補です。
候補キーのないテーブルは関係を表していません。リレーショナル モデルを使用して優れたデータベースを構築している場合、設計するすべてのテーブルには少なくとも 1 つの候補キーがあります。
リレーショナル モデルは、主キーの概念がなくても完成します。リレーショナル モデルの最初のプレゼンテーションにはありませんでした。実際問題として、宣言された主キーなしで外部キー参照を使用すると、混乱が生じます。論理的には正しい混乱かもしれませんが、それでも混乱です。主キーを宣言すると、DBMS がデータ ルールを適用するのに役立ちます。ほとんどの場合、DBMS を使用してデータ ルールを適用することは良いことであり、コストに見合うだけの価値があります。
一部のデータベース設計者と一部のユーザーは、主キーがテーブル内の行 (レコード) を識別するのか、それともテーブルが表す主題内のエンティティのインスタンスを識別するのかについて、頭が混乱しています。理想的な世界では、エンティティ テーブル内の行と対応するエンティティのインスタンスとの間に 1 対 1 の対応が必要です。
現実の世界では、物事は台無しになります。誰かが同じ新入社員を 2 回入力すると、その社員は 2 つの ID を持つことになります。誰かが採用されますが、データ入力が手動プロセスの隙間をすり抜けてしまい、省略が修正されるまでその従業員は ID を取得できません。最初に問題が発生したときに崩壊しないデータベースは、崩壊するデータベースよりも堅牢です。
主キー->テーブル内のレコードを一意に識別できる列または列のセットが主キーです。(テーブルには主キーを1つだけ含めることができます)
候補キー->主キーになる候補となる列または列のセットはすべて候補キーです。(テーブルには1つ以上の候補キーが存在する可能性があります。候補キーが1つしかない場合は、主キーとして選択できます)
違いはありません。主キーは候補キーです。慣例により、リレーションの候補キーの 1 つが通常「プライマリ」キーとして選択されますが、その選択は基本的に任意であり、データベースのユーザー/設計者/開発者の便宜の問題です。「主」キーが他の候補キーと根本的に異なるわけではありません。
テーブルには、行を一意に識別できる非常に多くの列を含めることができます。この列は候補キーと呼ばれますが、テーブルには 1 つの主キーで十分であるため、主キーはその 1 つにする必要があります。そのため、非常に多くの候補キーの中から主キーを選択することが重要です。それが主な違いです。
整数の主キーを持つ車両のテーブルを考えてみてください。
登録番号が候補キーになります。
実世界では、登録番号は変更される可能性があるため、候補キーとして適格となる可能性のある状況によって多少異なります。
主キー -> テーブル内のレコードを一意に識別できる列または列のセットは主キーです。(テーブルには 1 つの主キーしか存在できません) および候補キー -> 主キーと同じですが、たとえば DB 管理者の見込み客によって選択された主キー (主キーのサイズが最小の候補キー)