■サロゲートキーを使わないという選択肢はない
- 作者: (株)スターロジック羽生章洋
- 出版社/メーカー: 翔泳社
- 発売日: 2006/04/18
- メディア: 単行本
ふと思うことあったので、自分の考えをメモっておく。
弊社では現在稼動している全てのシステムがサロゲートキーです。なぜそうしているかということについて。
サロゲートキーについて、「変更に強い」という点がよくとりあげられてます。クライアントコードは変更されるから主キーには向いてない、とか、そういうこと。実際うちでも最近クライアントコードの振りなおしあったよ(泣)
# 基本的にウチではクライアントコードを主キーにしたりはしてないので全然大丈夫なんだけどねー。
触れられてなくて、これ以上に重要なのが、ウェブアプリケーションにおける扱い。複合主キーなんて使ってたら画面遷移のたびにいろんな項目をキーとして渡さなきゃいけなくなるから工数が増える。些細なことのように思われるかもしれないが、ページによって渡すパラメータが変わるってのはページ遷移ごとにキーがなにか考えなきゃいけないから無駄な思考コストが開発時・運用時ともにかかるわけ。コントローラ側も汚くなる。
# サロゲートキーを使っているケース $self->model('Client')->find({id => 'client_id'}); # クライアントコードを主キーとして使っているケース $self->model('Client')->find({client_code => 'client_code'});
URL も汚くなる。クールURIはサロゲートキーつかってないと厳しい。複合主キーでURI組み立てるのは難しいよ。どっち先にするのか、とか。クライアントコード振りなおしたら URI が変わるようじゃしょうがない。「クールなURIは変わらない」。これ重要。URI が変わるようじゃしょうがない。
以上。朝1のサロゲートキーに関する薀蓄でした。
トラックバック - http://d.hatena.ne.jp/tokuhirom/20070129/1170024999