「コード体系」をどうデータベース設計に落とすのか?

by tanabe on December 08, 2004

いろいろ書きたいネタが溜まってきた。ネタとしてメモを残すのだが、きちっと文章の構成を仕上げるところまでできているのが少なく、どうにもBlogに出すまでにタイムラグができてしまう。

今日はその中から比較的、急いでやった方がよさそうだったやつを。

テーマはデータベース設計。元ネタはこちらから。

「WEB+DB PRESS Vol.21 2004」
特集3 『現場で役立つデータベース設計の基礎知識』
(羽生 章洋氏)

この特集は基礎知識と銘打っているのですが、非常に面白い。特に興味深かった話が、コード体系をどうDB設計に落とすかという話。

コード体系はよく主キーとして使われます。たしかにコードはユニークであるケースが多いですし、当然のこととして疑いなくそのように設計する人も多いでしょう。
社員テーブルを作る時に無意識に社員番号(や社員ID)を主キーに設定していませんか?


しかし、この記事の中ではコード体系はあくまでビジネスにおける管理上の体系に過ぎず、DB設計の肝となるキーとは分離させるべきであると言っています。そうすることで、コード体系はビジネスの事情だけを考慮し自由に変更可能となるのです。そして、キーとしてインスタンスを特定することを役割とするアイデンティファイアという概念を提案しています。

ちょっと長いですが、引用します。

そして、リレーショナルデータモデルでいうキーとは、あるインスタンスを一意に特定できるというものです。誰がどう見ても客観的に一意に特定できなければなりません。しかし、コード体系には「ひっくるめて見たい”場合もある”」という恣意性を内包します。そのようなコード体系はキーに使うことができません。そこで、データ中心アプローチを標榜する人のほとんどが、「正しいコード体系に整備しなければならない」と声高に叫びます。 しかし、ユーザーが欲しているのは、論理的に正しいコード体系、ではなく、「実務において便利なコード体系」なのです。繰り返します。コード体系とはユーザインタフェースです。事実を客観的に特定するための座標としてのアイデンティファイアとは意味合いが異なります。コード体系の整備はビジネスの管理体系の整備です。よしんば膨大なコストを費やしてコード体系を整備し統一化したとしても、数年経ってそれがビジネスの足かせにならないと断言することは不可能です。ビジネスの変化は急激です。それに柔軟に対応できることが必要なのです。コード体系も然りです。正規化するためにビジネスの柔軟性を損ねるようでは本末転倒です。設計を担当する人が技や知識に溺れてはならないのです。コード体系に必要なのは使い勝手だということを強く認識してほしいと思います。

この記事には他にも、アイデンティファイアのより具体的な生かし方を含む、現実に沿いながらも質の高いプログラムを作るヒントがたくさんあります。お持ちでない方はぜひとも読んでみてください。

さて、明日は自分の中で勝手に宿題となっていた「優秀なプログラマの価値」について書いてみる予定です。


この記事へのコメント
初めまして、突然申し訳ありません。

貴サイト様を拝見させて頂きました。ランキング上位を狙えるサイトだと感じております。
☆ぜひとも当ランキングに登録して頂けませんでしょうか?

登録URLは下記です。初期の登録運営者様はライバルも少なく、登録するだけで多数のOutカウントを見込めます。
何卒よろしくお願い致します。

http://blog.rank10.net 元祖ブログランキング
Posted by PAGE URL at December 08, 2004 03:56