平成22年度 春期 午前Ⅱ 問6
データベース設計
次の表を情報無損失分解したもの
次の表を情報無損失分解したものはどれか。ここで,下線部は主キーを表す。
発注伝票(注文番号,商品番号,商品名,商品単価,注文数量)
- ア発注(注文番号,注文数量) 商品(商品番号,商品名,商品単価)
- イ発注(注文番号,注文数量) 商品(注文番号,商品番号,商品名,商品単価)
- ウ発注(注文番号,商品番号,注文数量) 商品(商品番号,商品名,商品単価)
- エ発注(注文番号,商品番号,注文数量) 商品(商品番号,商品名,商品単価,注文数量)
答えと解説を見る
✓ これが正解ウ発注(注文番号,商品番号,注文数量) 商品(商品番号,商品名,商品単価)
解説
商品名と単価は商品番号に、注文数量は二つの番号の組に従属します。
元の表の主キーは注文番号と商品番号の組です。関数従属を整理すると、商品名と商品単価は商品番号だけで決まり、注文数量は注文番号と商品番号の組で決まります。商品名と商品単価は主キーの一部に従属する部分関数従属なので、商品番号を主キーとする商品表へ切り出し、注文数量は主キーの組とともに発注表に残します。こう分けると、二つの表を商品番号で結合すれば元の表がそのまま復元でき、情報は失われません。分解の正誤は、各属性がどのキーで決まるかを書き出し、決まるキーと同じ表に置かれているかを確かめると判断できます。
ほかの選択肢はなぜ違うのか
- ア発注(注文番号,注文数量) 商品(商品番…:発注表の主キーを注文番号だけにしたため、一つの注文で複数の商品を頼んだときに注文数量を 1 行に書き切れません。どの商品の数量かという情報も失われ、元の表を結合で復元できません。
- イ発注(注文番号,注文数量) 商品(注文番…:発注表では注文番号だけで注文数量を持たせているので、商品ごとの数量を区別できません。商品表には注文番号を含めていて、商品名や単価が注文のたびに重複して記録される形にもなっています。
- エ発注(注文番号,商品番号,注文数量) 商…:注文数量を商品表にも入れていますが、商品番号を主キーとする表では、一つの商品に一つの注文数量しか持てません。注文ごとに異なる数量を記録できず、発注表の値とも食い違ってしまいます。
出典:平成22年度 春期 データベーススペシャリスト試験 午前Ⅱ 問6
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)