本文へスキップ

平成21年度 秋期 ITパスポート試験 問98

この問題の解説と、これまでの解答の記録です。

問98
頻出度★★★

I社は,企業に対してPC関連機器の販売を行っており,販売管理業務の情報をデータベースによって管理している。図1に示すデータベースとデータベース管理システムの印刷機能を使って,販売時に図2の請求書を発行する。 各商品の販売単価は適宜変更され,新たな販売単価とその更新日時が販売単価表の該当レコードに上書きされる。また,取引を行う企業(以下,取引先という)の担当者は原則1人であるが,取引先によっては部署ごとに1人存在することがある。取引先コードは,取引先ごとに採番する。 **図1 販売管理業務に関するデータベースの構造** 商品表

商品コード商品名分類コードメーカコード仕入先コード

販売単価表

商品コード販売単価更新日時

取引先表

取引先コード取引先名

取引先担当者表

取引先コード部署名所在地名前役職電話番号

**図2 請求書の様式** - 表題: 請求書 - 右上: 平成YY年MM月DD日 - 宛先欄 (左側): - [取引先名] [部署名] - [役職] [名前]様 - [所在地] [電話番号] - 本文: 下記のとおりご請求申し上げます。 - 発行者欄 (右側): 東京都文京区本駒込×丁目××番×号/株式会社 I - 右側: 伝票番号 XXXXXXXXXX - 明細表 (見出し行のみ。データ行は空欄):

商品コード商品名数量単価金額

- 合計欄 (明細表の下部。「合計」の行に「税抜」「消費税」「総額」の見出しがあり,その下の値セルは空欄):

合計税抜消費税総額

図1の取引先担当者表のレコードを一意に特定するための主キーとして,適切なものはどれか。

出典 平成21年度 秋期 ITパスポート試験 問98
解説

問 98

  • 不正解ア

    取引先コードだけでは一意になりません。部署ごとに担当者がいる取引先では, 同じ取引先コードのレコードが部署の数だけ存在してしまい, 1件に絞り込めないためです。

  • 不正解イ

    名前(担当者氏名)は同姓同名がありえ, 業務データの識別子として保証がありません。また部署ごとに担当者が置かれる構造なので, レコードを区別している本質的な列は部署名であり, 名前を主キーの構成要素にするのは適切ではありません。

  • ウ

    正解 主キーは「表の中の1レコードを他と区別して一意に特定できる, 最小の列の組合せ」です。この問題では前提文に「取引先の担当者は原則1人だが, 取引先によっては部署ごとに1人存在することがある」と書かれています。つまり同じ取引先コードをもつ担当者レコードが, 部署の数だけ複数存在しうるということです。したがって取引先コードだけでは足りず, その中を区別する列として部署名を加える必要があります。逆に取引先が違えば取引先コードが違い, 同じ取引先の中では部署が1つにつき担当者1人なので, 〔取引先コード, 部署名〕の組合せがあれば必ずレコードが1件に定まります。よって主キーは「取引先コード, 部署名」となり, ウ が正解です。

  • 不正解エ

    取引先コードを含まないため, 別の取引先に同じ名前・同じ役職(例: 「営業部長 田中」)の担当者がいると衝突します。どの取引先のレコードかを示す列が欠けており, 一意性を保証できません。

ここがポイント
  • 主キー=レコードを一意に特定できる列(またはその最小の組合せ)。1列で足りない場合は複数列を組み合わせた複合キーにする。
  • 主キーは表の定義だけでなく, 「取引先ごとに1人か, 部署ごとに1人か」といった業務ルール(前提文)から決まる。重複が起こりうる単位を見つけ, それを区別する列を加えるのがコツ。
用語

解答の記録