システム化とは「間違えないようにすること」と「作業を効率化すること」です。そのために、正規化によるデータベース設計が欠かせません。
以下の仕入れ表を見てください。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 | 食品 |
このような表をシステム化する際には、「正規化」が必要です。正規化を行うことで:
実際の現場でも、必ず正規化を行います。絶対に必要になるスキルなのでしっかり学びましょう。
実際に正規化をやってみましょう。
仕入れ表の"仕入れ先"を正規化してみます。
正規化後、仕入れ先の情報が新たなテーブルとして仕入れ先マスタにまとめられ、
元の仕入れ表の"仕入れ先"は仕入れ先マスタの仕入れ先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 | 食品 |