ナチュラルキー
自然キー, 業務キー, ビジネスキーとも言う
業務に関連するデータを用いた主キー
組である場合もある
対概念は、サロゲートキー
できるだけサロゲートキーの導入を検討しつつ、本当に確実に不要なのであればナチュラルキーを採用する
その値が本当にキーとして使えるかはちゃんと検討する必要がある
ビジネスが扱う範囲によって変わってくるはず
例えば、一般に人名は重複するのでキーとして使えないが、過去のグループとかなら使えるかもしれない
IDのライフサイクルも吟味する必要がある
基礎年金番号や、アメリカの社会保障番号は、数年経つと変わることもある(?)
ISBNとかは、新板と旧版に同じものが振られて、重複することがある
そのIDが何を特定するものかに着目する
emailは世界でユニークだが、人を特定するものではない
emailと人は1:1にはなっていない
「ただユニーク」なだけでそれをナチュラルキーにしてはいけない
1つの値をナチュラルキーにする例
Twitterを作っていて、user tableを設計する事を考える
user名(e.g. mrsekut)は、Twitter上でユニークなので、これを主キーにする
とした場合、これはナチュラルキーである
社員を特定するために使っている社員コード(e.g. 0012)はユニークなので、これを主キーにする
複数の値をナチュラルキーにする例
注文tableを設計していて、
業務的に意味のある3つのデータの組(userId, productId, date)で、1つの注文を特定できるので、この組を複合キーにする
具体例
ISBN
ISBNは重複しているので使えない
参考
『理論から学ぶデータベース実践入門』 6.3