なぜ正規化が必要なのか?

システム化とは「間違えないようにすること」と「作業を効率化すること」です。そのために、正規化によるデータベース設計が欠かせません。

以下の仕入れ表を見てください。Excelなどで管理されることが多いこのような表は、一見すると問題なく運用できているように見えます。確かにExcelでの運用ならこれで問題ありません。 しかし、システム化するとなると以下のような問題が潜んでいます。

仕入れ表

仕入れ先 住所 商品名 価格 商品の種類
山田商事 東京都新宿区1-1-1 冷蔵庫 50,000 家電
佐藤水産 北海道札幌市中央区2-2-2 サーモンフィレ 2,000 食品
佐藤水産 北海道札幌市中央区2-2-2 タラバガニ 3,800 食品
高橋園芸 静岡県静岡市4-4-4 観葉植物 5,500 園芸用品
高橋園芸 静岡県静岡市4-4-4 園芸スコップ 25,000 園芸用品
高橋園芸 静岡県静岡市4-4-4 トラクター 480,000 農機
伊藤工業 愛知県名古屋市7-7-7 工業用ポンプ 45,000 工業用品
渡辺フーズ 福岡県福岡市8-8-8 明太子 1,800 食品
上原食品 神奈川県横浜市9-9-9 ラーメン 100 食品

この表の問題点

1. データの重複

2. データの不整合

3. 柔軟性の欠如


正規化の必要性

このような表をシステム化する際には、「正規化」が必要です。正規化を行うことで:

実際の現場でも、必ず正規化を行います。絶対に必要になるスキルなのでしっかり学びましょう。

正規化をやってみる

実際に正規化をやってみましょう。 仕入れ表の"仕入れ先"を正規化してみます。
正規化後、仕入れ先の情報が新たなテーブルとして仕入れ先マスタにまとめられ、 元の仕入れ表の"仕入れ先"は仕入れ先マスタの仕入れ先IDに置き換わっています。 これが正規化です。

仕入れ先マスタ

仕入れ先ID 仕入れ先 住所
100 山田商事 東京都新宿区1-1-1
200 佐藤水産 北海道札幌市中央区2-2-2
300 高橋園芸 静岡県静岡市4-4-4
400 伊藤工業 愛知県名古屋市7-7-7
500 渡辺フーズ 福岡県福岡市8-8-8
600 上原食品 神奈川県横浜市9-9-9

仕入れテーブル(仕入れ表)

ID 仕入れ先ID 商品名 価格 商品の種類
1 100 冷蔵庫 50,000 家電
2 200 サーモンフィレ 2,000 食品
3 200 タラバガニ 3,800 食品
4 300 観葉植物 5,500 園芸用品
5 300 園芸スコップ 25,000 園芸用品
6 300 トラクター 480,000 農機
7 400 工業用ポンプ 45,000 工業用品
8 500 明太子 1,800 食品
9 600 ラーメン 100 食品

まとめ 正規化とは?

もう一度、思い出しましょう。正規化とは、「データを効率的に管理しやすく整理すること」です。 同じ情報を何度も保存するのを避け、データの一貫性や更新のしやすさを保つための方法です。 実際の現場でもデータベースを設計する際には必ずと言っていいほど正規化が行われます。


復習 正規化のメリット

練習問題:商品の種類を正規化しよう

以下の「仕入れテーブル」をさらに正規化する練習をしましょう。現在、このテーブルには「商品の種類」がそのまま文字列で保存されています。このような設計には、以下のような問題があります:

正規化を行い、「商品の種類」を別のテーブルに分けて整理しましょう。

問題.1

以下の「仕入れテーブル」の「商品の種類」を正規化し、正規化後の「仕入れテーブル」と「商品種類マスタ」を作成してください。


仕入れテーブル

ID 仕入れ先ID 商品名 価格 商品の種類
1 100 冷蔵庫 50,000 家電
2 200 サーモンフィレ 2,000 食品
3 200 タラバガニ 3,800 食品
4 300 観葉植物 5,500 園芸用品
5 300 園芸スコップ 25,000 園芸用品
6 300 トラクター 480,000 農機
7 400 工業用ポンプ 45,000 工業用品
8 500 明太子 1,800 食品
9 600 ラーメン 100 食品

おわりに

正規化ができましたか? おめでとうございます ! 正規化ができるようになったということはデータベース設計ができるようになったことを意味します。