cept field

2005/01/14

[]サロゲートキーの生成方法 13:53

サロゲートキーを生成するいろんな手段について。

データベースに割り当てさせる
インクリメンタルキー
MAX() + 1
最大値に1を加えた値を使う。パフォーマンスに問題あり。
UUIDs
Universally unique identifiers。128ビット値。ネットワークカードのIDのハッシュ値、システム時刻などから作る。
GUIDs
Globally unique identifiers。UUIDの拡張で、COMで使うやつ。
HIGH-LOW戦略
HIGHには固定の値、LOWには桁数を指定する。(HIGH, LOW)=(12345, 4) と指定した場合は、123450000, 123450001, ..., 123459999 と作っていく。

[]サロゲートキー>>(越えられない壁)>>ナチュラルキー 13:53

かつての自分がそうなのだが、サロゲートキーだとER図から多重度を判別できないという理由のもとにナチュラルキーを支持していた。「キー項目の仕様変更があるというのは単なる分析不足だ!」なんつって。

ビジネス要求が変わればキーも変わる。ビジネス要求は変わるもの。というわけでキーは変更できなければならない。多くの場合はサロゲートキーをまず考えるようにする。