平成22年度 春期 午前Ⅱ 問9
データベース設計
関数従属に関する問題
次の表を,第 3 正規形まで正規化を行った場合,幾つの表に分割されるか。ここで,顧客の 1 回の注文に対して 1 枚の受注伝票が作られ,顧客は 1 回の注文で一つ以上の商品を注文できるものとする。
| 受注番号 | 顧客コード | 顧客名 | 受注日 | 商品コード | 商品名 | 単価 | 受注数 | 受注金額 |
|---|---|---|---|---|---|---|---|---|
| 1055 | A7053 | 鈴木電気 | 2009-07-01 | T035 | テレビ A | 85,000 | 10 | 850,000 |
| 1055 | A7053 | 鈴木電気 | 2009-07-01 | K083 | ラジカセ A | 23,000 | 5 | 115,000 |
| 1055 | A7053 | 鈴木電気 | 2009-07-01 | S172 | ステレオ B | 78,000 | 3 | 234,000 |
| 2030 | B7060 | 中村商会 | 2009-07-03 | T050 | テレビ B | 90,000 | 3 | 270,000 |
| 2030 | B7060 | 中村商会 | 2009-07-03 | S172 | ステレオ B | 78,000 | 10 | 780,000 |
| 3025 | C9025 | 佐藤電気 | 2009-07-03 | T035 | テレビ A | 85,000 | 3 | 255,000 |
| 3025 | C9025 | 佐藤電気 | 2009-07-03 | K085 | ラジカセ B | 25,000 | 2 | 50,000 |
| 3025 | C9025 | 佐藤電気 | 2009-07-03 | S171 | ステレオ A | 50,000 | 8 | 400,000 |
| 3090 | B7060 | 中村商会 | 2009-07-04 | T050 | テレビ B | 90,000 | 1 | 90,000 |
| 3090 | B7060 | 中村商会 | 2009-07-04 | T035 | テレビ A | 85,000 | 2 | 170,000 |
- ア2
- イ3
- ウ4
- エ5
答えと解説を見る
✓ これが正解ウ4
解説
受注、顧客、商品、受注明細の 4 つの表に分割されます。
まず関数従属を整理します。受注番号から顧客コードと受注日が決まり、顧客コードから顧客名が決まります。商品コードから商品名と単価が決まり、受注番号と商品コードの組から受注数と受注金額が決まります。表全体の主キーは受注番号と商品コードの組です。第 2 正規形にするには、主キーの一部に従属する属性を切り出し、受注(受注番号,顧客コード,顧客名,受注日)、商品(商品コード,商品名,単価)、受注明細(受注番号,商品コード,受注数,受注金額)の 3 つに分けます。第 3 正規形では、受注の中で顧客コードを経て決まる顧客名を顧客(顧客コード,顧客名)へ切り出すので、表は 4 つになります。キーの一部で決まる属性、キー以外を経て決まる属性の順に外へ出すと数えられます。
ほかの選択肢はなぜ違うのか
- ア2:2 つに分ける場合、受注の情報と明細の情報を分けただけになり、明細側には商品コードだけで決まる商品名と単価が残ります。主キーの一部への従属が残るので、第 2 正規形にもなっていません。
- イ3:3 つは、主キーの一部に従属する属性を切り出した第 2 正規形の段階の数です。受注の表には顧客コードを経て決まる顧客名が残っていて、推移的な従属を取り除く第 3 正規形の分割がまだ済んでいません。
- エ5:この表の関数従属から切り出せるのは、受注、顧客、商品、受注明細の 4 つまでです。5 つ目の表を立てる根拠になる従属は、受注番号、顧客コード、商品コードのどれからも導けません。
出典:平成22年度 春期 データベーススペシャリスト試験 午前Ⅱ 問9
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)