データベースのアンチパターンに関して。
以前下記ブログでも書いたんですが設計のスキルに関してもう少し身に着ける必要があるとおもい、チェックします。
論理設計のグレーノウハウ サロゲートキー
論理設計のグレーノウハウ 列持ちテーブル、集計キー、多段ビュー
今回お世話になりそうな本はこれです。
参考文献
Contents
複数の表結合
デメリット
正規化が徹底されておらず、SQLのレビューもされていないため、表の結合が多すぎて解読しにくい、サービスイン直前でデータが増えた場合、パフォーマンスに問題がある
対策
表設計の見直し、SQLの構築
許されるケース
集計や帳票出力などの多数のテーブルデータをどうしてもつなぐタイプのもの
メモ
SQLの結合はプログラムのループに近い。ループが小さいもの(カーディナリティが小さいもの)を先に条件付けしたほうが、早く結合が行える
大作SQL(いわゆるスパゲッティ)
デメリット
性能が悪く、実行計画が悪くなりがち
対策
リファクタリング
メモ
実行計画やSQLのアルゴリズムについて勉強すること
BLOB型の乱用(シリアライズしてデータを格納)
デメリット
結合ができない。SQLを利用した検索もきかず、パフォーマンスに問題が出る。
対策
正規化を正確に行う
許されるケース
本当にバイナリデータを格納する(あるいはそれに近いケース)。本当のシリアライズが必要なときなど
メモ
本当にシリアライズするタイプのデータ以外は基本正規化していれる。また文字数でもむやみやたらにtextを使わない