注文書が大量に届きました。それをコンピュータに入力しなければなりません。 例えば、以下の様な注文データです。
日付 | 会社名 | 部署 | 商品 | 単価 | 個数 | 金額 |
---|---|---|---|---|---|---|
2014/01/22 | あいう商事 | 東京支店 | まみむめもセット(工業用) | 2,500円 | 20個 | 50,000円 |
2014/01/22 | かきく会社 | 大阪営業所 | まみむめもセット(工業用) | 2,500円 | 50個 | 125,000円 |
2014/01/23 | あいう商事 | 大阪支店 | わをんパック(大型) | 5,800円 | 30個 | 174,000円 |
2014/01/24 | さしす工業 | 浦和工場 | なにぬねのセット | 1,500円 | 80個 | 120,000円 |
2014/01/25 | さしす工業 | 厚木工場 | なにぬねのセット | 1,500円 | 70個 | 105,000円 |
・ | ・ | ・ | ・ | ・ | ・ | ・ |
・ | ・ | ・ | ・ | ・ | ・ | ・ |
これを全て文字として入力してみると、どうなるでしょうか。
入力する人は大変ですよね。何度も同じ会社名や商品名を入力しなければなりません。
また、長い商品名を入力するのも大変です。入力ミスしたり、何度も入れ直したり。入力担当者はうんざりしてしまう事でしょう。
これら入力後に閲覧する側の立場から見てみましょう。
これらの情報から納品書、請求書を作成した場合、入力ミスが発生していたら、そのまま印刷されてしまい得意先へ間違えた情報で郵送されてしまいます。
それが、会社名や商品名であれば、まだ良いですが(実際は大事になりますが)、金額だった場合どうでしょう。
トラブルに発展する可能性もあります。
また、会社名や商品名でデータを検索した結果を集計したい場合に、入力ミスがあった場合に、検索文字と一致せずに集計結果が間違える可能性もあります。
これら、入力の手間やミス入力を防止するためデータベースではデータの正規化という事を行います。
分り易く説明すると、データ内で共通に使用されている情報をコードにする事で入力の簡素化、ミス入力防止が可能となります。
例えば、先程のデータで会社に番号を付けます。
会社名 | 番号 |
---|---|
あいう商事 | 1 |
かきく会社 | 2 |
さしす工業 | 3 |
同様に部署も番号を付けます。
同じく商品にも番号を付けます。商品は、単価も一緒に登録しておきます。
商品名 | 単価 | 番号 |
---|---|---|
まみむめもセット(工業用) | 2,500 | 1 |
わをんパック(大型) | 5,800 | 2 |
なにぬねのセット | 1,500 | 3 |
先程の売上データは以下の様になり、売上データがコード化されました。
日付 | 会社名 | 部署 | 商品 | 単価 | 個数 | 金額 |
---|---|---|---|---|---|---|
2014/01/22 | 1 | 1 | 1 | 2,500円 | 20個 | 50,000円 |
2014/01/22 | 2 | 1 | 1 | 2,500円 | 50個 | 125,000円 |
2014/01/23 | 1 | 2 | 2 | 5,800円 | 30個 | 174,000円 |
2014/01/24 | 3 | 1 | 3 | 1,500円 | 80個 | 120,000円 |
2014/01/25 | 3 | 2 | 3 | 1,500円 | 70個 | 105,000円 |
・ | ・ | ・ | ・ | ・ | ・ | ・ |
・ | ・ | ・ | ・ | ・ | ・ | ・ |
この様にデータをルールに従ったコードにし扱いやすくする事を正規化と言います。
ちなみに、これら履歴や日時に関連する情報をトランザクションデータと呼びます。
また、ルールに従いコード化した情報、ここでは、会社、部署、及び、商品をコード化しましたが、これらの様にコード化したトランザクションデータの要素となる情報をマスターデータと呼びます。
なお、単価、個数、金額は、トランザクションデータ側に残していますが、これは理由があります。これは、また別の機会に説明します。