“発注伝票”表を第3正規形に書き換えたものはどれか。
ここで,(主キー)を付けた項目は主キーを表す。
発注伝票(注文番号(主キー),商品番号(主キー),商品名,注文数量)
正答3
解説
正解は3です。
表を第3正規形に正規化する問題です。
1つの注文で複数の商品を注文できるので、発注伝票の主キーは注文番号と商品番号の組です。
注文数量は、注文番号と商品番号の組で決まります。
一方、商品名は主キーの一部である商品番号だけで決まります(部分関数従属)。
そこで商品名を、商品番号を主キーとする別の表に分けます。
【選択肢別解説】
1:× 発注表の主キーが注文番号だけで、商品番号がありません。
どの注文でどの商品を何個注文したのかがわからなくなり、元の情報が失われます。
2:× 発注表に商品番号がないため、注文数量がどの商品のものかわかりません。
また商品表は注文番号と商品番号の組が主キーで、商品名が商品番号だけに従属する部分関数従属が残っています。
3:○ 発注表は注文番号と商品番号の組を主キーとし、注文数量はその組全体に従属します。
商品表は商品番号を主キーとし、商品名が従属します。
部分関数従属も推移的関数従属もなく、2つの表を商品番号で結合すれば元の発注伝票に戻せるので、第3正規形です。
4:× 商品表に注文数量が入っています。
注文数量は注文ごとに決まる値で、商品表の主キーである商品番号だけでは決まらないため、商品表に置くのは誤りです。
【ポイント】
第2正規形では主キーの一部への従属(部分関数従属)を、第3正規形では主キー以外の列への従属(推移的関数従属)を取り除きます。
正規化しても、表を結合すれば元の情報を復元できることが条件です。