平成27年度 春期 午前Ⅱ 問6
データベース設計
部分関数従属に関する問題
受注入力システムによって作成される次の表に関する記述のうち,適切なものはどれか。受注番号は受注ごとに新たに発行される番号であり,項番は1回の受注で商品コード別に連番で発行される番号である。
なお,単価は商品コードによって一意に定まる。
| 受注日 | 受注番号 | 得意先コード | 項番 | 商品コード | 数量 | 単価 |
|---|---|---|---|---|---|---|
| 2015-03-05 | 995867 | 0256 | 1 | 20121 | 20 | 20,000 |
| 2015-03-05 | 995867 | 0256 | 2 | 24005 | 10 | 15,000 |
| 2015-03-05 | 995867 | 0256 | 3 | 28007 | 5 | 5,000 |
- ア正規化は行われていない。
- イ第1正規形まで正規化されている。
- ウ第2正規形まで正規化されている。
- エ第3正規形まで正規化されている。
答えと解説を見る
✓ これが正解イ第1正規形まで正規化されている。
解説
受注日などが受注番号だけで決まる部分関数従属が残る第1正規形です。
この表は、各欄に値が一つずつ入り、繰返しの項目もないので、第1正規形の条件は満たしています。主キーは受注番号と項番の組です。項番は1回の受注の中での連番なので、受注番号と組にしてはじめて行が一つに決まります。ところが受注日と得意先コードは、項番に関係なく受注番号だけで決まります。キーの一部にだけ従属するこの関係が部分関数従属で、これが残っている限り第2正規形にはなりません。実際に、同じ受注の3行に同じ受注日と得意先コードが繰り返し記録されています。さらに単価が商品コードだけで決まるという従属も残っています。正規形を判定するときは、主キーを決めてから、キーの一部だけで決まる項目がないかを先に探すと手早く判定できます。
ほかの選択肢はなぜ違うのか
- ア正規化は行われていない。:表の各欄にはそれぞれ値が一つだけ入っており、一つの行の中に同じ種類の項目が繰り返し並ぶ形にもなっていません。これは第1正規形の条件に当てはまるので、正規化が行われていないとは言えません。
- ウ第2正規形まで正規化されている。:受注日と得意先コードが、主キーの一部である受注番号だけで決まっています。この従属を取り除くには受注の情報を別の表に分ける必要があり、この表のままでは第2正規形の条件を満たしません。
- エ第3正規形まで正規化されている。:第3正規形は第2正規形を満たしていることが前提ですが、この表はその手前の段階で止まっています。加えて、単価が商品コードだけで決まるという従属も、別の表に分けられないまま残っています。
出典:平成27年度 春期 データベーススペシャリスト試験 午前Ⅱ 問6
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)