「一般的には、第3正規形まででよい」の根拠は何か?(5)
「一般的には、第3正規形まででよい」理由について書かれた貴重な記事をきちんと読んでみた。
素早く正規形を見抜く実践テクニック
http://www.atmarkit.co.jp/fdb/rensai/db_enginer03/db_enginer03_1.html
「なぜ第3正規形まででよいのか」の結論は以下の通り:
テーブル構造からビジネスルールを排除すると、第3正規化までで正規化が完了する。
この記事でいうビジネスルールとは、要するに関数従属性・多値従属性・結合従属性とかのこと。
「ビジネスルールを排除する」とは、リアルワールドにあるxx従属性をDB上の制約として実装しないこと。
つまり、「ビジネスルール」という表現を避けて、ものすごく砕いて書くと、こういうこと:
とりあえず第3正規形にして、まだ非完全正規形のテーブルがあったら、サロゲートキーを付ける。
そしたら完全正規形になる。
だから、
- ボスイコッド正規形への変換
- 第4正規形への変換
- 第5正規形への変換
はしなくてもよくなるよ
もともと「第三正規形まででよい」と言われ始めた理由がほんとにコレなのかは別として、書いてあることは了解した。
この解法だとスキーマだけは完全正規形になるが、リアルワールドのモデリング対象は相変わらず「ビジネスルール」を持っているのだから、それを何とかしてシステムに取り込まなくてはならない。
アクセンチュアさんの回答は、そういうのはプログラムにやらせるのがいい、その方がメンテしやすいから、というもの。
稼働しているシステムのテーブル構造を変えるのは非常に大変な作業です。
できればこういったビジネスルールはテーブル構造に実装するのではなく、
アプリケーションプログラムとして実装した方が保守性の高いシステムとなります。
この主張はT字形ER手法の逆。どっちが本当かは検証が必要。
真実はたぶん、中間よりかなりT字形側に寄ったところにあると思う。
DBから「ビジネスルール」を100%排除したらいちばんメンテが楽だった、なんてことはあり得ないから。
毎日エントリすることにした
6月から毎日エントリすると決めたぞ。今日で2勝0敗。