令和6年度 ITパスポート試験 公開問題 問81 解説 データベースの正規化
一つの表で管理されていた受注データを,受注に関する情報と商品に関する情報に分割して,正規化を行った上で関係データベースの表で管理する。正規化を行った結果の表の組合せとして,最も適切なものはどれか。ここで,同一商品で単価が異なるときは商品番号も異なるものとする。また,発注者名には同姓同名はいないものとする。
- ア
- イ
- ウ
- エ ✓ 正答
解説
この問題は、正規化の基本原則である「関連する情報を適切なグループに分けること」を理解していれば正解できます。判断の根拠は、テーブル内の項目が「何によって決まるか」という依存関係に注目することです。
具体的には、受注番号が決まれば決まる情報(発注者名、受注した商品番号と個数)と、商品番号が決まれば決まる情報(商品名、単価)に切り分けることで、データの重複を防ぎます。
正規化の考え方
正規化とは、データベースにおける情報の重複をなくし、データの整合性を保ちやすくするための設計手法です。今回の表を例にすると、以下の2つのグループに分けられます。
- 受注グループ: 受注番号ごとに一意に決まるもの
- 商品グループ: 商品番号ごとに一意に決まるもの
もし元の表のまま運用すると、同じ商品番号の商品が何度も注文されるたびに、商品名や単価をその都度入力しなければならず、データの重複が発生します。これがもし「商品名の変更」や「単価の改定」を行った場合、該当するすべてのレコードを修正しなければならず、修正漏れによる不整合(データの矛盾)のリスクが生じます。
思考プロセス
問題の表を分析すると、以下のようになります。
・受注に関する情報:受注番号、発注者名、商品番号、個数 ・商品に関する情報:商品番号、商品名、単価
この2つの情報を別々の表に分割します。
- 受注テーブル:受注番号を主キーとし、誰がどの商品をいくつ買ったかを管理します。ここには「商品番号」を持たせることで、商品テーブルと紐付け(リレーション)が可能になります。
- 商品テーブル:商品番号を主キーとし、商品の詳細(名前や単価)を管理します。
選択肢エは、これらが必要な項目を漏らさず、かつ適切に分類しているため、最も正確な正規化の結果といえます。
正規化が役立つ実務上の場面
正規化は、システムのメンテナンス性を飛躍的に高めるために不可欠です。例えば、ECサイトで「商品の価格を変更する」という操作を想像してください。
商品テーブルに単価を格納していれば、1か所を修正するだけで、過去の受注データに影響を与えずに(または過去のデータを参照しつつ)新しい価格を適用できます。もし正規化をしていないと、数百万件ある受注データの単価カラムをすべて検索・置換しなければなりません。これはシステムに非常に大きな負荷をかけ、非常に危険な作業となります。
「情報の重複を避け、更新時の影響範囲を最小限にする」。この考え方はITパスポート試験だけでなく、実際の業務システム開発におけるデータベース設計の基本の「き」です。