令和3年度 秋期 応用情報技術者試験 午前 問題 問28
受注入力システムによって作成される次の表に関する記述のうち,適切なものはどれか。受注番号は受注ごとに新たに発行される番号であり,項番は1回の受注で商品コード別に連番で発行される番号である。
なお,単価は商品コードによって一意に定まる。

図の説明テキスト
| 受注日 | 受注番号 | 得意先コード | 項番 | 商品コード | 数量 | 単価 |
|---|---|---|---|---|---|---|
| 2021-03-05 | 995867 | 0256 | 1 | 20121 | 20 | 20,000 |
| 2021-03-05 | 995867 | 0256 | 2 | 24005 | 10 | 15,000 |
| 2021-03-05 | 995867 | 0256 | 3 | 28007 | 5 | 5,000 |
解答・解説
正解: イ. 第1正規形であるが第2正規形でない。
正規化の各段階の定義と、与えられた表の属性間の関数従属について分析します。
主キーの特定
問題文に「受注番号は受注ごとに新たに発行される番号であり,項番は1回の受注で商品コード別に連番で発行される番号である」とあります。表の各行(レコード)を一意に識別するためには、「受注番号」と「項番」の組み合わせが必要となります。したがって、この表の主キーは {受注番号, 項番} です。第1正規形の判定
第1正規形とは、表の中に繰り返し項目が存在せず、すべての属性が単一の値(スカラ値)となっている状態を指します。
示された表を見ると、すべてのセルに単一の値が格納されており、繰り返し項目は存在しません。したがって、この表は第1正規形であると言えます。第2正規形の判定
第2正規形とは、第1正規形を満たした上で、すべての非キー属性が主キーの全体に対して完全関数従属している(主キーの一部に対する部分関数従属が存在しない)状態を指します。
この表において、主キー {受注番号, 項番} の一部である「受注番号」に注目します。表を見ると、同じ「受注番号」(995867)に対して、「受注日」(2021-03-05)と「得意先コード」(0256)は常に同じ値になります。つまり、「受注日」と「得意先コード」は、主キー全体ではなく、主キーの一部である「受注番号」のみによって決定されています(部分関数従属が存在する)。
したがって、この表は第2正規形ではないと判定できます。
(参考)「単価」は問題文に「商品コードによって一意に定まる」とあるため、非キー属性から別の非キー属性への関数従属(推移的関数従属)も存在します。これは第3正規形の違反要因ですが、そもそも第2正規形を満たしていないため、ここでは第2正規形でないことが結論となります。
以上より、この表は「第1正規形であるが第2正規形でない」ことになります。
各選択肢の解説
- ア: 表には繰り返し項目が存在せず、すべての項目に単一の値が入っているため、第1正規形を満たしています。よって誤りです。
- イ: 正解。第1正規形の条件を満たしていますが、主キー {受注番号, 項番} の一部である「受注番号」に関数従属する項目(受注日、得意先コード)が存在するため、第2正規形ではありません。
- ウ: 上述の通り、第2正規形の条件を満たしていないため誤りです。
- エ: 第2正規形の条件を満たしていないため、当然第3正規形でもありません。よって誤りです。