令和7年度 秋期 午前Ⅱ 問6
データベース設計
第3正規形に関する問題
次の表に対して,第3正規形まで正規化を行った場合,少なくとも幾つの表に分割されるか。ここで,顧客の1回の注文に対して一つの受注番号が割り当てられ,顧客は1回の注文で一つ以上の商品を注文できるものとする。
| 受注番号 | 顧客コード | 顧客名 | 受注日 | 商品コード | 商品名 | 単価 | 受注数 | 受注金額 |
|---|---|---|---|---|---|---|---|---|
| 1055 | A7053 | 鈴木電気 | 2025-07-01 | T035 | テレビA | 85,000 | 10 | 850,000 |
| 1055 | A7053 | 鈴木電気 | 2025-07-01 | K083 | 無線スピーカーA | 23,000 | 5 | 115,000 |
| 1055 | A7053 | 鈴木電気 | 2025-07-01 | S172 | Blu-rayプレイヤーB | 78,000 | 3 | 234,000 |
| 2030 | B7060 | 中村商会 | 2025-07-03 | T050 | テレビB | 90,000 | 3 | 270,000 |
| 2030 | B7060 | 中村商会 | 2025-07-03 | S172 | Blu-rayプレイヤーB | 78,000 | 10 | 780,000 |
| 3025 | C9025 | 佐藤電気 | 2025-07-03 | T035 | テレビA | 85,000 | 3 | 255,000 |
| 3025 | C9025 | 佐藤電気 | 2025-07-03 | K085 | 無線スピーカーB | 25,000 | 2 | 50,000 |
| 3025 | C9025 | 佐藤電気 | 2025-07-03 | S171 | Blu-rayプレイヤーA | 50,000 | 8 | 400,000 |
| 3090 | B7060 | 中村商会 | 2025-07-04 | T050 | テレビB | 90,000 | 1 | 90,000 |
| 3090 | B7060 | 中村商会 | 2025-07-04 | T035 | テレビA | 85,000 | 2 | 170,000 |
- ア2
- イ3
- ウ4
- エ5
答えと解説を見る
✓ これが正解ウ4
解説
受注・顧客・商品・受注明細の4つの表に分割されます。
主キーは受注番号と商品コードの組です。ここから従属を整理します。受注番号だけで顧客コード、顧客名、受注日が決まり、商品コードだけで商品名と単価が決まるので、これらは主キーの一部への部分関数従属です。受注数と受注金額は、受注番号と商品コードの組で初めて決まります。部分関数従属を切り出すと、受注(受注番号,顧客コード,顧客名,受注日)、商品(商品コード,商品名,単価)、受注明細(受注番号,商品コード,受注数,受注金額)の3表になり、これが第2正規形です。さらに受注の中に、顧客コードから顧客名が決まる推移的関数従属が残るので、顧客(顧客コード,顧客名)を切り出します。こうして4表になります。部分従属で分け、次に推移従属で分ける、の2段階で数えるのが手順です。
ほかの選択肢はなぜ違うのか
- ア2:2表では、たとえば受注の情報と受注明細の情報を分けただけの段階になります。受注番号だけで決まる属性と商品コードだけで決まる属性を分けていないので、部分関数従属が残ります。
- イ3:3表は第2正規形の段階です。受注・商品・受注明細に分けた時点では、受注の中に顧客コードから顧客名が決まる推移的関数従属が残っており、第3正規形にはなっていません。
- エ5:5表にするには、もう一つ独立した従属が必要ですが、この表から読み取れる従属は受注、顧客、商品、明細の四つに収まります。受注金額は単価と受注数から計算できる値でも、明細の表に置けば足ります。
出典:令和7年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問6
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)