主キーは、行を一つに決める

注文表では注文IDを主キーにします。同じ注文IDが二行にあっては一件に決まりません。

また主キーにはNULL(値がない状態)を許しません。顧客表の主キーは顧客IDです。

氏名は同姓同名や改姓があるため、この例では主キーにしません。主キーは一列とは限らず、複数列の組合せで構成する場合もあります。

整理して、見比べる主キーと外部キーの整理
表・項目この例の役割重複
顧客表・顧客ID 顧客を識別する主キー 不可
注文表・注文ID 注文を識別する主キー 不可
注文表・顧客ID 顧客表を参照する外部キー 可:一人で複数注文

外部キーは、参照先とのつながり

顧客表にC01=あおい、C02=れんを登録します。注文表の顧客IDは、顧客表の顧客IDを参照する外部キーです。

C01がO101とO103を注文しても問題ありません。注文表では顧客IDの重複が許され、一人の顧客から複数の注文へつながる一対多の関係になります。

存在しない参照先を、制約で防ぐ

この例はすべての注文に登録済み顧客を必須とします。外部キー制約を設定すれば、顧客表に存在しないC99への参照を防げます。

参照中の顧客を削除したときの動作は、制約の設定によって異なります。常に注文が自動削除されると決めつけないこと。

NULLを許す設計かどうかも別途決めます。