顧客名と住所,商品名と単価,顧客が注文した商品の個数と注文した日付を関係データベースで管理したい。
正規化された表として,適切なものはどれか。
ここで,下線は主キーを表し,顧客名や商品名には,それぞれ同一のものがあるとする。
正答1
解説
正解は1です。
図の4つの案では、下線のついた項目がキーです。
1は顧客、商品、注文の3つの表で、顧客番号、商品番号、注文番号に下線があり、注文の表は顧客番号と商品番号を持っています。
正規化では、同じ情報を重複して持たず、1つの事実を1か所で管理するように表を分けます。
顧客名や商品名には同じものがあるので、名前ではなく番号で識別する必要があります。
【選択肢別解説】
1:○ 顧客と商品の情報をそれぞれ別の表にし、注文の表は顧客番号と商品番号で参照しています。
同名の顧客や商品も区別でき、重複のない正規化された表です。
2:× 注文の表が顧客名と商品名を持っています。
同名の顧客や商品があると、どの顧客やどの商品の注文かを特定できません。
3:× 顧客の表に日付を入れているため、注文のたびに顧客の情報を繰り返し記録することになります。
注文の表も顧客名と単価を持ち、重複と同名の問題があります。
4:× 商品の表に個数を入れていますが、個数は注文ごとに決まる値です。
注文の表も顧客名と住所を持つので、同じ顧客の住所が何度も記録されます。
【ポイント】
単価は商品で決まり、個数と日付は注文で決まります。
項目が何によって決まるかを考えて表に配置することが、正規化の基本です。