平成22年度 春期 データベーススペシャリスト試験 午前Ⅱ 問6
テクノロジ/データベース次の表を情報無損失分解したものはどれか。ここで,実線の下線は主キーを表す。 発注伝票(注文番号,商品番号,商品名,商品単価,注文数量) ※注文番号,商品番号が主キー (注:本サイトでは原問題の下線(主キー)を注記で表しています)
出典:平成22年度 春期 データベーススペシャリスト試験 午前Ⅱ 問6
- ア発注(注文番号,注文数量) ※主キーは注文番号 商品(商品番号,商品名,商品単価) ※主キーは商品番号
- イ発注(注文番号,注文数量) ※主キーは注文番号 商品(注文番号,商品番号,商品名,商品単価) ※主キーは注文番号
- ウ発注(注文番号,商品番号,注文数量) ※主キーは{注文番号,商品番号} 商品(商品番号,商品名,商品単価) ※主キーは商品番号
- エ発注(注文番号,商品番号,注文数量) ※主キーは{注文番号,商品番号} 商品(商品番号,商品名,商品単価,注文数量) ※主キーは商品番号
正解:ウ
解説
発注伝票(注文番号,商品番号,商品名,商品単価,注文数量)は,主キーが{注文番号,商品番号}の複合キーです。商品名,商品単価は商品番号だけに関数従属し,注文数量は{注文番号,商品番号}に関数従属するため,発注(注文番号,商品番号,注文数量)と商品(商品番号,商品名,商品単価)の二つの表に分解することで,情報を失うことなく(無損失で),かつ更新時異状のない分解となります。
選択肢ごとの解説
- ア誤り。発注表に商品番号が含まれておらず,どの商品が注文されたかが分からなくなるため,情報が失われる(無損失分解になっていない)分解です。
- イ誤り。商品表の主キーが注文番号になっており,同じ商品を複数の注文で扱えなくなるなど,元の情報構造を正しく表現できていません。
- ウ正しい。発注(注文番号,商品番号,注文数量)と商品(商品番号,商品名,商品単価)に分解することで,{注文番号,商品番号}への関数従属と商品番号への関数従属をそれぞれ満たし,情報を失うことなく分解できています。
- エ誤り。商品表に注文数量が含まれており,注文数量は商品番号だけでなく注文番号にも依存する属性であるため,商品表に含めると更新時異状が生じます。