データベースの基礎
社員表(社員番号, メールアドレス, 氏名, 部署)で、社員番号とメールアドレスはどちらも社員ごとに異なり、NULLにならない。氏名と部署は、ほかの社員と同じになることがある。この表の候補キーをすべて挙げたものはどれか。
- A社員番号だけ
- B社員番号、およびメールアドレス(それぞれ単独で候補キー)
- C社員番号、および社員番号と氏名の組
答えと解説を見る
正解:B. 社員番号、およびメールアドレス(それぞれ単独で候補キー)
候補キーは、行を一意に識別でき、しかもそこから列を1つでも除くと一意に識別できなくなる、最小限の列の組です。この表では、社員番号もメールアドレスも、それだけで社員を一意に識別できるので、どちらも候補キーです。候補キーの中から1つを選んで主キーにし(ここでは社員番号を選ぶのが自然です)、選ばれなかったメールアドレスは代替キーと呼ばれます。代替キーにUNIQUE制約とNOT NULL制約を付けておくと、重複を防げます。社員番号と氏名の組も行を一意に識別できますが、氏名を除いても一意性が保たれるので最小ではなく、候補キーではありません。このように、一意に識別できるが最小とは限らない列の組はスーパーキーと呼ばれます。
- A. 主キーに選ぶのは1つでも、候補キーはメールアドレスも含めて2つあります。
- B. 正しい。どちらも単独で行を一意に識別でき、最小なので候補キーです。
- C. 社員番号と氏名の組は、氏名を除いても一意性が保たれるので、最小ではなく候補キーではありません。