トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション



ビギナーボードリーダー:堀川 明

毎月第2、第4木曜日はボードリーダーからのレポートを掲載いたします。
 
   

2004年5月13日
『テーブル設計は、悩みます』

制御系の収集されたデータを SQL Server で管理するシステムを先日作りました。
20 個ぐらいの小規模なテーブルから構成されるものですが、1 つのテーブルに記録されるレコードは膨大になってきます。
収集されたデータは、加工を施して、IIS を使って Web で閲覧表示を行います。

通常のビジネスアプリケーションであれば、テーブルを正規化させて、将来変更に耐えられるような設計をするところです。
ところが、制御系でそのような設計をすると、とんでもなく遅いシステムになることがあります。

参照整合性を利用し、複数のテーブルを連結させて、データを表示する。

このような当たり前の処理が、時として命取りになることもありますし、さらにロック解除待ちが発生すると、データ収集へ悪影響が出ることもあります。

データベースの教科書を見ると、第 1 正規化、第 2 正規化、第 3 正規化などのような解説がでています。
初心者の方は、何が何でも教科書に沿ったテーブル設計をしなければいけないと考えてしまいます。
しかし本当に大事なことは、システムが要求している仕様を満たすためには、何をすべきなのだろうか? という見極めです。

システムのモデル化をしたテーブルを作り、データを自動生成させるシステムを用意し、SQL Server に実際にデータを食わせて、SQL Server の挙動を監視してみて下さい。思わぬ問題が見つかることがあります。

そのような問題を解決するときには、正規化にこだわってはいけません。
無駄と思われるかもしれませんが、同じような列を用意したり、テーブルの連結を避けたりします。またインデックスの定義も変更する必要があることもあります。

テーブル設計の基本は正規化ですが、それがすべてではありません。
時と場合に応じて、柔軟な発想ができるようにしましょう。

 

ボードリーダーレポート トップページへ

 

 
PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.