ナチュラルキーとサロゲートキー
ビジネス上のIDである品番とか氏名コードを「ナチュラルキー」、これに対してビジネス上のコードIDをDBに格納するためだけに生成したものを「サロゲート(代理)キー」と呼ぶ。
テーブル設計をおこなう際、どちらをテーブルの主キーとするかは議論のわかれるところ。
- ナチュラルキーの特長、弱点
- DBエンジニアにとって扱いやすい。システム移行などの作業がシンプル
- コード体系の変更があった場合の影響が大きい
- サロゲートキーの特長、弱点
- コード体系の変更の影響を局所化できる
- オブジェクトモデルとの相性◎
- データベースに直接データ投入する場合でも、別途IDを採番する必要あり
- 一意キー制約を貼り忘れたままシステム稼動してしまうと…
- 初心者には敷居が高いかも
個人的にはサロゲートキー好きだけど、DBAやデータ移行担当者のスキルや経験、DBを複数システムから共用するなどの制約から諦めざるを得ない場面も多い。
また、サロゲートキー採用を推進する場合は、データ投入時にID採番するためのサンプル提供やメンテナンスツールを先行して作成するなど、初心者や未経験者へのフォローが必要かも。