令和7年度 秋期 データベーススペシャリスト試験 午前II 問6
次の表に対して,第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 |
解答・解説
正解: ウ. 4
第3正規形までの正規化プロセスは以下の手順で行われます。実際の業務システムでよく見られる「受注」のデータを想定して解説します。対象となる表が初期状態(非正規形)として「受注番号、顧客番号、顧客名、商品番号、商品名、数量」などの情報を持っていると考えます。これを正規化していきます。
- 第1正規形(繰り返し項目の排除) 「顧客は1回の注文で一つ以上の商品を注文できる」ため、1つの受注情報の中に複数の商品情報が含まれることになります(繰り返し項目)。これを分離し、例えば主キーを「受注番号」とする「受注表(受注番号, 顧客番号, 顧客名)」と、主キーを「受注番号+商品番号」とする「受注明細表(受注番号, 商品番号, 商品名, 数量)」の2つに分けます。
- 第2正規形(部分関数従属の排除) 複合主キーの一部にのみ従属する項目を別の表に分離します。「受注明細表」の主キーは複合キーですが、「商品名」は「商品番号」のみに 部分関数従属 しています。これを分離し、「商品表(商品番号, 商品名)」を作成します。
- 第3正規形(推移的関数従属の排除) 主キー以外の項目に従属する項目を別の表に分離します。「受注表」において、「顧客名」は主キーである「受注番号」ではなく「顧客番号」に 推移的関数従属 しています。これを分離し、「顧客表(顧客番号, 顧客名)」を作成します。 以上の手順により、最終的に以下の 4つ の表に分割されます。
- 受注表(受注番号, 顧客番号など) - 受注明細表(受注番号, 商品番号, 数量など) - 顧客表(顧客番号, 顧客名など) - 商品表(商品番号, 商品名など) したがって、少なくとも4つの表に分割されます。