過去問解説(経営情報システム)_2024年 第7問

難易度・正答率・重要度

  • 難易度: ★★★☆☆(正規化の原則理解)
  • 正答率: ★★☆☆☆(従属性の見極めが鍵)
  • 重要度: ★★★☆☆(データベース設計の基礎)

問題文

以下に示す表は、ある小売店が利用している受注管理表の一部である。この表を正規化した構造として、最も適切なものを下記の解答群から選べ。
ただし、単価は商品コードによって一意に定まるものとする。

出典:中小企業診断協会|2024年度 第1次試験問題|経営情報システム(PDF)

解答

  • 正解:

解説

  • 前提の整理:
    「単価は商品コードによって一意」→ 単価は商品マスタに持つべき属性。受注明細に単価を重複保持すると更新不整合の原因になる。
  • ア:〇(正規化の観点で最適)
    ・受注ヘッダ:受注番号を主キーとして「受注日・得意先コード・合計金額」。
    ・受注明細:複合主キー(受注番号+商品コード)で「受注数量」。
    ・商品マスタ:商品コードを主キーに「単価」。
    ・合計金額はヘッダで派生保持(または計算)とする設計が一般的で、単価は商品マスタで一意に管理し、明細は数量のみを保持して冗長性を回避できる。
  • イ:×
    受注ヘッダに商品コードを含めると、1受注複数商品の構造と整合しない(繰り返し属性の混入)。さらに「得意先コード・商品コード・単価」は関係不明で不整合。
  • ウ:×
    明細のキーに得意先コードを含めるのは不適切。明細の従属先は受注番号であり、得意先コードは受注ヘッダの属性。
  • エ:×
    受注日を別テーブルに切り出す意味がなく、関数従属が破綻する分割。ヘッダから受注日を分離すると更新・参照が煩雑化。
  • オ:×
    ヘッダに商品コードが含まれ、1対多構造を崩している。明細に得意先コードを持たせるのも不適切。

学習のポイント

  • 第1正規形: 繰り返し属性を排除し、明細は独立テーブル化。
  • 第2正規形: 複合主キーに部分従属する属性を除外(得意先コードはヘッダへ)。
  • 第3正規形: 非キー属性間の従属を排除(単価は商品コードのみに従属→商品マスタへ)。