リレーショナルデーターベースで正規化
自分はわりと最初から設計に参加していたが、最初は正規化できるものは正規化していたのが
2年目くらいからは、正規化した方がいいものは正規化・しない方がいいものは正規化しない
という感じになった。
ある意味当たり前のことと思われるが、今はしらないが、私が学習した際に
DBの初心者教科書にはこういう基本的なことの注意点がのっていなかったような気がする
きっかけは、たくさんいろいろなシステムを見る機会があったのだが、大手の超重要系のDBでは
あまり正規化されていないことが普通な気がする。
全く別の機会で、後でそういうのの担当した人から、データーベース設計依頼があった場合も、依頼された時の
約束事は正規化を最低限にすることくらいだった。
もちろん、正規化した方がいいものは正規化すべきというのはもちろんだが、
正規化しなくてもプログラミングで正規化のようなことはできるし、逆に正規化してもプログラミングで正規化しなかったようなことはできる
安全性という点では、正規化しない方が勝ると思う。
もちろん、安全性という点で正規化した方が勝る場合もある。
正規化してもいいんだけど、正規化するなら、重要なデータの場合、正規化していないデータも同時にもっといた方が安全度が勝るという感じかな。
検索で使う場合の速度も一般的に正規化しない方が勝ると思う。
もちろん、検索で使う場合の速度で正規化した方が早い場合もある。
そうでないという意見もあると思うが、数百万・数千万・数億のデータでやったり、いつも使っているDBだけでなく
いろいろなDBでやってみればそういう傾向になると思う。
実際、設計するとあまり経験がない人ほど正規化されていないと騒ぐような気がするが
結局求められていることが何かということだと思う。
それに、データの容量は昔は高かったので、考慮する必要があったが、今はテキストデータならほぼ無視できる価格になっている。
ただ、欠点は、初心者に正規化やっていないといわれたりしがちなことか?
まあ、上司や発注元が正規化好きなら正規化好きになっておいた方が無難とも言っておきます。