ITパスポート講座の講師ブログ

よくあるご質問 -データベースの正規化の必要性-

皆さん、こんにちは!
ITパスポート講座担当の小野です。
私はまだ休み気分が抜けませんが、
皆さんはもう通常モードに戻りましたか?

今回は、よくあるご質問のうち、データベースの正規化の必要性についてご紹介しましょう。
正規化は3段階で行われますが、1つのセルに1つの情報が入れられた状態を、第1正規化が終わった状態としています。
ほとんどのデータベースは、データ作成時点でこの状態にあるかもしれません。

it01-1

この表では4つのデータしかありませんし、学科も[経済]と[経営]の2つだけですから
直接この表を書き換える手間もそれほどないかもしれません。
しかし、学科が10、学生の述べ受験科目が5,000くらいある表で、10人の学科が変わったとしたらどうでしょう? 
[経済]から[経営]の変更、[経済]から[法学]への変更などバラバラな感じの学科変更があった場合、
書き換える作業中にミスが生じる可能性が非常に高くなります。
そうすると、山田一郎さんの経済学の得点を示す行では学科名が[経営]になっているにもかかわらず、
簿記の得点を行では学科名が「法学]になってしまうというミスが起こってしまう可能性が高くなるわけです。

そこで、第2正規化を行います。

it01-2

しかし、まだ十分ではありません。例えば「経済学科」が「経済政策学科」へ変わるような、
学科名自体の変化が起こったとしましょう。【学生表】の学科名を学生数の分だけすべて書き換えなければなりません。
しかも、学科名が変わった学科の部分だけに限ってです。やはり、ここでもミスが生じる可能性が高そうですね。
【学生表】には在籍する学生分の行があり、数百~数千になるでしょうから。

そこで、第3正規化を行います。

it01-3

このように正規化を行うと、表の一部を修正しなければならない場合にも最小限の修正で済むようになります。
これをテキストでは「②メンテナンス(情報更新)がしやすくなる」と表しています。
表1よりも表3のメンテナンスが圧倒的にラクである点は上記の例でご理解いただけると思います。

また、重複部分がなくなる=同じデータがある場合に1回だけ保存することによって、
全体のデータ量を減らすことが可能です。
表1では全部で24個のデータがあります(四角で囲んだ中の各セル)。
一方、表3ではデータは22個に減っています。表1でもう1行追加されると6個のデータが追加されますが、
表3の場合には【得点表】に3個のデータしか追加されません。
【学生表】や【学科表】に追加する事柄はないからです。よって、データが増えるほど、
1つの表に記載する事柄を少なくしておくことにより、データ量を減らすことができます。
これをテキストでは「①各表のデータサイズが小さくなる」と表しています。

このように正規化することで、更新作業もラクになるし(ミスも少なくなるし)、
データ量も少なくなるという利点があるわけですね。