正規化とは?
データベースのテーブル設計ルールです。
データの持ち方を定義します。
メリット
データを登録/更新/削除した時のトラブルが少なくなります。
デメリット
テーブルの数が多くなります。
一般の人には、どこに何のデータがあるかわかりにくくなります。
ここからは
「正規化する目的と意味」
について詳しく説明します。
すぐに正規化の手順を知りたい方は、データベースの正規化の手順をわかりやすく解説を参照してください。
データを整理した形で持ちます。
正規化は、
「同じデータはを2重に持たない」
という考えを元にしてます。
ミニマリストの家族と考えてください。
自分専用のバスタオルを持ってたら、個人持ちをやめて家族で共有します。
共有できるものはすべて共有します。
そのおかげで家の中の物は少なくなり、すっきりして管理しやすくなります。
RDBで使います。
RDBは日本語では「関係データベース管理システム」といいます。
一般的にデータベースと呼ぶとRDBを意味しています。
他のデータベースの種類にNoSQLがあります。
正規化はRDBで使う設計ルールです。
業務系のシステムではRDBを必ず使います。
システムを作る上で必須ともいえる知識です。
テーブルを作成する時に正規化の規則にそって作らないといけません。
またSQLを使ってデータを取り出す時に、正規化の知識があると何データがどこのテーブルに保存されているか感覚的にわかるようになります。
データの登録/更新/削除時にトラブルが発生しにくくなります。
先ほどのミニマリストの家族の例です。
家のドライヤーに欠陥があってリコールが出ました。
共有しているので1つの交換で終わりました。
共有してない家族はどうでしょうか?
お母さんのドライヤーを交換しましたが、お父さんも持っていて発火してしまいました。
娘もドライヤーをもっているかもしれませんがわかりません。
このようなトラブルを少なくできると考えてください。
正規化の副産物として、誰が設計してもほぼ同じになるというメリットがあります。
例えばこの注文書には何のテーブルが必要でしょうか?
主なテーブルは
・注文書ヘッダ
・注文書明細
・業者マスタ
・商品マスタ
と推測できます。
注文書と聞いただけで想像がつくのは、正規化を使ってデータベースの設計をしているからです。
正規化を知っていれば、初めて見るデータベースでも構成が予想できます。
これは勉強する上で大きなメリットです。
デメリットとして
・専門家以外にはわかりにくくなる
・データ参照時のパフォーマンスが悪くなる
というのがあげられます。
Excelでデータをもらう時に、1つの表にまとまっていたら使いやすいです。
正規化すると1つの表が複数個に分割されます。
複数個のExcelを渡されて、
「このExcelから好きなデータを組み合わせて使って」
と言われてもたいへんです。
参照する場合は正規化しない方がわかりやすいです。
下記の手順にそって作業していくと正規化できます。
第一正規化の手順
列の項目の繰り返しを探し、行方向に変換する
行の項目の繰り返しを探し、表に分割する
第二正規化の手順
主キーを探す
主キーの項目に注目し、関係関数従属する項目を探す
第三正規化の手順
主キー項目以外で、関係関数従属する項目を探す
次の章で詳しい正規化の手順を説明します。