平成28年度 春期 ITパスポート試験 問94 解説 データベースの正規化
商品の仕入状況を管理している関係データベースの“仕入一覧”表を正規化して,“仕入”表と“商品”表に分割したい。分割後の二つの表に共通して必要なフィールドとして,最も適切なものはどれか。ここで,仕入れは一度に一つの商品だけを仕入れることとし,仕入番号で一意に識別できる。また,商品は商品番号で一意に識別できる。
- ア 仕入番号
- イ 支払方法
- ウ 商品番号 ✓ 正答
- エ 商品名
解説
この問題は、正規化の目的を理解しているかを問うています。正解を導く鍵は「分割した後の二つの表を、後からどうやって繋ぎ合わせるか」という点にあります。
仕入一覧という一つの表を、仕入に関するデータ(仕入表)と商品に関するデータ(商品表)に分割する場合、バラバラになった情報を元通りに組み合わせるための「共通の鍵」が必要です。この共通鍵として「商品番号」を持たせておくことで、特定の仕入れがどの商品を指しているかを、商品番号を通じて参照できるようになります。したがって、答えはウとなります。
正規化の目的とリレーションシップ
正規化とは、データベースにおけるデータの重複をなくし、データの整合性を保ちやすくするための処理のことです。今回のように一つの表に「仕入れの事実」と「商品の詳細情報」が混在していると、同じ商品が仕入れられるたびに商品名などの情報が重複して記録されてしまいます。
これを解消するために表を分割するのですが、ただ分けるだけでは情報が完全に分離してしまい、何の商品を仕入れたのかが分からなくなってしまいます。そこでリレーショナルデータベースでは、共通の項目(主キーや外部キー)を通じて二つの表を結びつけるリレーションシップを作成します。この橋渡し役となるのが、両方の表に共通して存在する「商品番号」です。
実務におけるデータベース設計の重要性
この知識は、システムエンジニアやデータアナリストがデータベースを設計する際に必須となる基礎教養です。例えば、ECサイトのデータベースを想像してください。
注文テーブルと商品テーブルが分かれていなければ、商品の価格が変わった際に、過去のすべての注文履歴まで遡って価格情報を書き換えるという非常に危険な作業が発生します。しかし、正規化を行い「商品番号」で繋いでいれば、商品テーブルの価格を1箇所修正するだけで、すべての注文履歴に対して正しい価格が適用されるようになります。
このように、正規化は「データの更新漏れ」や「不整合」といったトラブルを未然に防ぎ、システムの運用効率を劇的に高めるために行われます。ITパスポート試験でこの問題を理解しておくことは、データの持ち方というシステムの根幹を理解する第一歩といえます。