第 3 正規形での注文明細
出典: 令和2年度 10月 応用情報技術者試験 午前 問28 (IPA)
関係“注文記録”の属性間に①~⑥の関数従属性があり,それに基づいて第 3 正規形まで正規化を行って,“商品”,“顧客”,“注文”,“注文明細”の各関係に分解した。関係“注文明細”として,適切なものはどれか。ここで,{X,Y}は,属性 X と Y の組みを表し,X → Y は,X が Y を関数的に決定することを表す。また,実線の下線は主キーを表す。
注文記録(注文番号,注文日,顧客番号,顧客名,商品番号,商品名,数量,販売単価)
〔関数従属性〕
① 注文番号 → 注文日
② 注文番号 → 顧客番号
③ 顧客番号 → 顧客名
④ {注文番号,商品番号} → 数量
⑤ {注文番号,商品番号} → 販売単価
⑥ 商品番号 → 商品名
※ 原文では主キーを下線で表しています。選択肢では「主キー:」として書いています。
- ア 注文明細 (注文番号,顧客番号,商品番号,顧客名,数量,販売単価) 主キー: {注文番号,顧客番号,商品番号}
- イ 注文明細 (注文番号,顧客番号,数量,販売単価) 主キー: {注文番号,顧客番号}
- ウ 注文明細 (注文番号,商品番号,数量,販売単価) 主キー: {注文番号,商品番号}
- エ 注文明細 (注文番号,数量,販売単価) 主キー: 注文番号
正解と解説を見る
正解: ウ
- ア: 顧客番号や顧客名は注文番号だけで決まるので、注文明細に入れると部分関数従属が残ります。
- イ: 数量と販売単価は {注文番号,商品番号} で決まります。顧客番号は注文番号で決まるので、主キーに含めるのは誤りです。
- ウ: 主キー {注文番号,商品番号} で数量と販売単価が決まるので、第 3 正規形の注文明細として正しい答えです。
- エ: 注文番号だけでは、どの商品の数量・販売単価かが決まりません。商品番号も主キーに必要です。
ポイント
関数従属性をもとに分けると、次の 4 つの関係になります。
- 商品 (商品番号,商品名) … ⑥
- 顧客 (顧客番号,顧客名) … ③
- 注文 (注文番号,注文日,顧客番号) … ①②
- 注文明細 (注文番号,商品番号,数量,販売単価) … ④⑤
数量と販売単価は {注文番号,商品番号} で決まるので、注文明細の主キーは {注文番号,商品番号} です。