羽生氏のDB話を三つ続けて。
「繰り返しの排除とは
データ構造の部品化に他ならないのです。ほら3箇所も同じ処理が出てきたらサブルーティンにするでしょ。モジュール化。メソッドでもいいけど。これと同じ事です。繰り返し項目が出てきたら、そこだけ切り出して構造を部品として扱うのです。これが第1正規形。見出し明細形式にこだわってちゃいかんです。」
次の話はDB以外にも言える。たぶん異業種の人でも「モデリングだ方法論だ、と振りかざす前に自分が使っている道具の特性を理解してきちんと性能を引き出すということをデフォでやって欲しいな、と思う次第」は同感してくれるのではないか。
「モデリングだ方法論だ、と振りかざす前に自分が使っている道具の特性を理解してきちんと性能を引き出すということをデフォでやって欲しいな、と思う次第。特性を知らないからナチュラルキー剥き出しの正規化を推進してしまうわけでさ。業務要件と性能を両立させる方法としてのDB設計としてIDとコード体系の分離(WEB+DB
PRESS Vol.21参照)なんてのがあるわけで。
とりあえず、こういう最低ラインを超えてからだと思う。このあたりの手抜きを呼び出し言語側のやり繰りで何とかしようという不自然さが、話をややこしくしているわけで。データアクセスのモジュール化とSQLの書き方とRDBMSの内部動作の話を混ぜちゃいかんです。分割して統治せよ。」
もう一丁。
「IDという形を導入すればIDをPKにした時点で自ずからINDEXが生成される。んで、FK張るときにはIDを引いてくるわけです。このときにFK張った側にもINDEXは設定してやる。これは基本です。そうすることで、JOINのときの探索コストは随分と低減されます。」
買う気はあまりなかったんだけど、「SQLの書き方ドリル」もチェックしてこよう。
2005/4/6追記
参照元)
「繰り返しの排除とは」
「JOINのこと」と「FKへのINDEX」