問題
| 受注番号 | 受注日 | 得意先コード | 商品コード | 受注数量 | 単価 | 合計金額 |
|---|---|---|---|---|---|---|
| 10001 | 2024-04-01 | 3011 | A | 5 | 1000 | |
| B | 1 | 2000 | ||||
| C | 2 | 3000 | 13000 | |||
| 10002 | 2024-04-01 | 1022 | B | 4 | 2000 | |
| C | 1 | 3000 | 11000 | |||
| 10003 | 2024-04-02 | 2033 | A | 6 | 1000 | |
| C | 3 | 3000 | 15000 |

選択肢
- 1{受注番号、受注日、得意先コード、合計金額}/{受注番号、商品コード、受注数量}/{商品コード、単価}
- 2{受注番号、受注日、得意先コード、商品コード、合計金額}/{受注番号、商品コード、受注数量}/{得意先コード、商品コード、単価}
- 3{受注番号、受注日、得意先コード、商品コード、合計金額}/{得意先コード、商品コード、受注数量}
- 4{受注番号、得意先コード、合計金額}/{得意先コード、商品コード、受注数量}/{商品コード、単価}/{受注番号、受注日}
- 5{受注番号、受注日、商品コード、合計金額}/{受注番号、得意先コード、受注数量}/{商品コード、単価}
正解
1. {受注番号、受注日、得意先コード、合計金額}/{受注番号、商品コード、受注数量}/{商品コード、単価}
詳しい解説を見る解説を閉じる
解説
元の表は、1件の受注(受注番号・受注日・得意先コード・合計金額)の中に商品の行(商品コード・受注数量・単価)が繰り返し現れる非正規形なので、まず繰返しを排除して1行1明細の表にする(第1正規形)。受注番号が同じでも商品コードが異なる行があるため、主キーは複合キー{受注番号、商品コード}となる。このうち、受注日・得意先コード・合計金額は受注番号だけで決まり、単価は商品コードだけで決まる(問題文の但し書き)。どちらも主キーの一部への関数従属(部分関数従属)なので、第2正規形にする段階で分離し、{受注番号、受注日、得意先コード、合計金額}と{商品コード、単価}を別の表にする。受注数量は主キー全体(受注番号と商品コードの組)で決まるので{受注番号、商品コード、受注数量}の表に残る。分けた3表には、非キー属性がほかの非キー属性を介して決まる推移関数従属もないので、これで第3正規形になっている。結果として、(1){受注番号、受注日、得意先コード、合計金額}、(2){受注番号、商品コード、受注数量}、(3){商品コード、単価}の3表構成となり、アが正解。イは、受注の表に商品コードを含めているため1件の受注が商品の数だけ行に分かれて受注日などが重複し、単価の表にも単価の決定に関係しない得意先コードが入っている。ウは単価の表がなく単価の情報が失われるうえ、{得意先コード、商品コード、受注数量}ではどの受注の数量か特定できない。エも{得意先コード、商品コード、受注数量}ではどの受注の数量か特定できず、{受注番号、受注日}を別の表にする必要もない。オは受注の表に商品コードを入れる一方、受注数量を商品コードのない{受注番号、得意先コード、受注数量}に置いているため、どの商品の数量か特定できない。(出典: 一般社団法人 中小企業診断協会 令和6年度 中小企業診断士1次試験 経営情報システム 第7問)
中小企業診断士トップ
一問一答・予想問題・まとめノート