データベースの正規化|レシートから考えるPOSデータ分析(5)
f t p h l
本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)
正規化によって、レシートデータを「整理」する
前回の記事「レシートからトランザクションテーブルを想像する」では、レシートの情報から1つのテーブルを作成しました。
前回記事において、これはPOSシステム内にある「トランザクションテーブルの一部」と考えられると書きました。
トランザクションテーブルの”重複項目”を別のテーブルに切り出してみる:データベースの正規化
さて、このテーブルですが、重複している項目が多く、とても見づらいです。 そこで、重複している項目を別のテーブルに切り出してみます。この切り出す時に重要となるのが、「第2回」で出てきた分類です。
- 店舗ごとの情報
- レシートごとの情報
- 購入商品ごとの情報
それぞれの分類ごとに切り分ければ、”階層”が同じであるので重複している項目がなくなるはずです。実際に、1~3の分類で元の”トランザクションテーブル”を切り分けると下のようになります。
1.「店舗ごとの情報」を切り出したテーブル
2.「レシートごとの情報」を切り出したテーブル
3.「購入商品ごとの情報」を切り出したテーブル
このように3つのテーブルに分けられました。
しかしながら、このままではそれぞれのデータベース同士が紐づいていません。2のテーブルのレシートのデータが1のテーブルのどの店舗のデータと紐づいているのか、3.のテーブルの購入商品のデータが2.のテーブルのどのレシートのデータと紐づいているかがわかりません。 そこで、これらのテーブル同士をつなぐため、店舗番号とレシート番号を用意します。
1の店舗ごとのテーブルの各行に店舗番号を、2のレシートごとのテーブルの各行にレシート番号をふり、テーブルの中に列として組み込みます。
1.「店舗ごとの情報」を切り出したテーブル
2.「レシートごとの情報」を切り出したテーブル
3.「購入商品ごとの情報」を切り出したテーブル
これにより、各テーブル間のデータ同士が紐づきました。
このように、データの重複をなくすようにデータベースを整理することを、データベースの正規化と呼びます。正規化については記事「マスタデータとトランザクションデータついて(正規化編)|データ分析用語を解説」に詳しく記載していますので、こちらをご覧ください。
さらなるデータベースの正規化
上で作成したテーブルのうち3の購入商品ごとのテーブルを見てください。
この中には同じ商品名の項目が含まれています。商品単価は商品ごとに設定されているので、商品名と商品単価は別のテーブルに切り出すことができそうです。
実際に切り分けてみると次のように2つのテーブルに分けられました。
3′. 購入商品ごとのテーブル
そして、3’の購入商品ごとのテーブルと4の商品ごとのテーブルを紐づけるために商品番号という列をそれぞれのテーブルに作成しています。
今回、データベースを正規化することによって、レシートに記載された項目をすべて盛り込んだ”トランザクションテーブル”を4つに分けました。このうち、1の店舗ごとのテーブルと4の商品ごとのテーブルは、「マスタテーブル」という種類のテーブルになります。これについては、次回に書いていきたいと思います。
連載/関連記事リスト:POSデータ分析
f t p h l