あるものを一意に特定するもの。
集合論において、あるものと属性が1:1で対応することを全単射と呼ぶ。
全単射になっているものはIDとして機能とする。
IDを考えるときは、単数に対するものか、複数(グループ)に対するものか、複数であればどのような粒度であるのか?などを考慮する必要がある。ex. カニという属性を考えるとして、どんな種類なのか?何科目なのか?色は?名称は?
一見一意性を持たないような属性であっても、文脈によってはIDとして機能することもある。ex. . 特定の集団におけるその集団が1つしか持ち合わせいない物品など
IDの一部に意味を持たせるような設計は避けたほうが良い。ex. 製品番号の値の一部に色などの識別子を含める
そのような設計をすると第一正規形を満たせなくなるため、クエリが不用意に複雑化したり、DB設計に悪影響を及ぼす。
ナチュラルキーは実世界に存在する言葉やラベルをIDとするのに対して、サローゲートキーはDBまたはそれを利用するアプリケーション内部だけで通じるものをIDとする。
全単射が成り立つのであればナチュラルキーを使用して問題ないが、次の点に注意を払う。
サロゲートキーは次の点に注意を払う。
サロゲートキーでID設計する際、物理設計を意識するケースがあると思う。自動採番の値とすべきか、乱択なユニークな値とすべきかによって性能影響があるケースなど。
関連書籍