Entry

そういえばサロゲートキーとか主キーの話

2007年12月19日

『SQL Hacks』をぼちぼち読んでいたんですけれど,そこに「サロゲートキーはあまり良くない」みたいな話があって,いまどき珍しい記述だな……と,つらつら。

SQL Hacks ―データベースを自由自在に操るテクニック
Andrew Cumming Gordon Russell 西沢 直木
オライリー・ジャパン (2007/07/28)
売り上げランキング: 93933

サロゲートキーというのは,代替キーのことで,業務上使われているキーの代わりになる,内部的なキーのことです。例えば,ある商品の商品コード(A000123-Z とか)なんかは業務でよく使われるけれども,これとはまったく関係のない内部的なキーを主キーにして登録しよう,という話(もちろん,商品コードのカラムには UNIQUE 制約をつける)。商品コードみたいなもんは,桁数や意味の体系がくるくる変わるから,そういうのに左右されないキーを作ろうってのが,主たる目的です。大抵の DBMS にはユニークな連番を作ってくれる機能があるから,手間としてもそれほど大きくありません。

最近の DB 本を読む限り,サロゲートキーを使う方法は割とポジティブに書かれている印象があるんですけれど,面と向かってネガティブな理由を強調しているのは珍しいな……と。

あたしゃどちらかというとサロゲートキー推進派で,特にマスタ系(ストック系)のテーブルにはなんでもかんでもサロゲートキーを振っちゃったりしています。だって,楽なんだもん。ほにゃらら ID とかで1件検索できると,DAO も作りやすい(抽象化しやすい)ですしね。

そういえば ID というと,ほにゃらら ID の他に,ほにゃらら SUBID みたいなもんを振っているテーブルを見ることが,たまーにあります。けど,これって意味があるのかしらん。あたしが見たのは版管理したいから SUBID を振っている……みたいなもんだったけれど,それだったら,親ID のカラムをつけるだけでいいんじゃね?とも。これならブランチも切れますしね。変な ID はあまり増やさないほうが良いんじゃないか……とも,つらつら。

なんだかまとまらないので,そんな感じということで(どんな感じだ)。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN