主キーは1つのテーブルに1つだけ

 1つのテーブルに設定できる主キーは1つだけです。2つ以上の主キーを設けることはできません。
 複数の列(フィールド)を選んだ上で主キーを設定すればそれらの列すべてに鍵のマークがつきますが、それは1つの主キーが複数の列で構成されているに過ぎず、それぞれの列が別個に主キーとして機能するわけではありません。

 例としてこのようなテーブルを用います。「地方公共団体コード」列が主キーとなっていますので、当然ですがこの列については値の重複が許されません。


 そして実際のデータはこのようになっています。


 このテーブルに、新しい列として「ID」列を設けます。


 そして、重複しない値を記録したうえで…


 「地方公共団体コード」と「ID」列の両方を選んで(Ctrlキーを押しながら左端の灰色の部分を順次クリックすることで選択できます)、主キーにします。
 こうすると一見、主キーが2つできた、つまりそれぞれの列が別個の主キーになったかのように見えますが…


 「地方公共団体コード」の値を変更し、重複を生じさせてみたもののエラーになりません。また、「ID」の値に重複を生じさせてもエラーになりません。
 なぜかというと、上記の設定により「地方公共団体コード」と「ID」が全体として1つのキー(複合キー)として設定されたからです。結果として両方の列の値が重複することは許されません。しかし、個々の列の値が重複することは何ら制限されないのです。


 どちらの列も重複させたくない、というのであれば主キーのほかにインデックスの設定を利用する必要があります。ここでは「ID」を主キーとし、「地方公共団体コード」についてはインデックスにより重複を許さない設定とします。


 主キーとした「ID」列の値の重複が許されないのはもちろんですが、「地方公共団体コード」についても値の重複を生じさせようとするとエラーとなります。狙い通りの設定ができたことがわかります。