DB設計時の注意点1 
本日2度目の投稿。かーつんです。
先にSQLのチューニング基礎書いたので、
今回はDB設計時の注意点など書いてみようかと思います。
みなさんDB設計するとき何を元に設計されてますか?
基本的に私に限らず画面設計を元にされることが多いのではないでしょうか。
画面にどんな項目があって、その項目にはどんな値が入って。などですね。
よく(私はそうだった)ですが、学校などでDBを教えてくれる所は、
正規化をきちんとするように。と言われるはずです。
まぁ、得られる情報・データを整理して無駄を省き、
整理整頓した形でDBに保存できるように、テーブルを作成しましょう。
という事なのですが、正直、実際の現場で一般的に教わる第三正規形を
キッチリ作り上げているDBは少ないです。
こんな事を書くと、「正規化なんてしなくて良い」と誤解されそうですが、
そういうわけでもないんですね。
現場で行われているのは、
「正規化したデータに冗長性を持たせる」
というものです。
最初からやらないというは、
「散らかるから部屋の掃除をしない」
というのと同じで、ゴミと一緒に必要なものが隠れていてわからなくなることがあります。
やっているのは、
「片付けた後に、必要なものだけを引き出す」
です。
よくあるのは、
正規化した段階でマスタっぽくなっているテーブルに
冗長性を持たせることで、集計時のSQL負荷を軽減させる。とかでしょうか。
つまり。
DB設計時には、テーブル同士の関連性を見極めて、
1テーブル更新することによる他テーブルへの影響を把握しておき、
影響による弊害を極限まで減らすことが重要です。
これがキッチリ行われていると、
テーブルを変更する際も、何も考えられていないときとは比較にならないくらい
作業量に差が出ます。
(テーブル追加なんかは無問題なんですけど、変更・削除はしんどいのです。)
では、今回はここまで。
か-д-つんがお送りしました。