ログ日記

作業ログと日記とメモ

DBのjoin

っていうか・・普通に考えたら10個もjoinするのがおかしいよね。書きながら思ったけど。
何をくっつけているかと言うと・・

  • 注文詳細
  • 注文マスタ
  • 問屋
  • 在庫
  • 商品
  • メーカー
  • 商品ステータス
  • アカウント
  • 集計のための一時テーブル x N

・・・やっぱり全部必要だ。
非正規化をもっと考えないといけない?


しかしぐぐるとこういう記事が。
「DBを正規化すると遅くなる」は誤解,実証実験の結果が公開に | 日経 xTECH(クロステック)

 テーブルを1つだけを検索するときには処理速度に差がつかず,複数テーブルにわたって検索すると処理性能に差が出ている。非正規化されたデータベースの場合,複数テーブルで同じ項目を持つことになる。その項目が検索対象になると,その項目を含め,複数のテーブルから値を集計するようなケースでは,テーブルの結合処理が多く発生するためだ。

何だかちょっと違うな。

在庫管理においても、現在の理論(帳簿)在庫数は前月在庫数−今月売上数+今月入荷数ですが、この在庫数も年月にて正規化すると現在の在庫数を求める場合必ず2レコード読む必要がありますので、前月確定(実)在庫数を追加しておきます。

http://www.t3.rim.or.jp/~buchi/dbtune/sld002.htm

これもうちの場合だと違うな。現在の在庫数はリアルタイムに動くからその都度計算しないといけない。


doaplus.com - このウェブサイトは販売用です! - コンソーシアム データ中心設計 データモデル ィー 分科会 データ 企業 リソースおよび情報
ここのpdf資料を見てもっかい考えるかなぁ。