受注入力システムによって作成される次の表に関する記述のうち,適切なものはどれか。
受注番号は受注ごとに新たに発行される番号であり,項番は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
正答2
解説
正解は2です。
この問題は、受注データの表がどの正規形まで満たしているかを、関数従属から判断するものです。
受注番号ごとに項番が振られるので、この表の主キーは{受注番号, 項番}の組です。
【選択肢別解説】
1:× 各列には一つの値だけが入っており、繰返し項目もありません。
したがって第1正規形の条件は満たしています。
2:○ 受注日と得意先コードは、主キーの一部である受注番号だけで決まります。
主キーの一部への関数従属(部分関数従属)があるため、第1正規形ですが第2正規形ではありません。
3:× 部分関数従属が残っているので、第2正規形の条件を満たしていません。
また、単価は主キーではない商品コードで決まる推移的関数従属もあります。
4:× 部分関数従属と推移的関数従属の両方が残っています。
第3正規形にするには、受注・受注明細・商品の表に分割する必要があります。
【ポイント】
第2正規形は「部分関数従属がない」、第3正規形は「推移的関数従属がない」状態です。
複合キーの表では、キーの一部だけで決まる列がないかを最初に確認しましょう。