データベーススペシャリスト試験 2015年 午前2 問06
受注入力システムによって作成される次の表に関する記述のうち, 適切なものはどれか。受注番号は受注ごとに新たに発行される番号であり, 項番は1回の受注で商品コード別に連番で発行される番号である。
なお, 単価は商品コードによって一意に定まる。

ア:正規化は行われていない。
イ:第1正規形まで正規化されている。(正解)
ウ:第2正規形まで正規化されている
エ:第3正規形まで正規化されている。
解説
受注入力システムの表に関する正規化の問題【午前2 解説】
要点まとめ
- 結論:この表は第1正規形(1NF)まで正規化されているが、第2正規形(2NF)以降は満たしていない。
- 根拠:繰り返しグループはなく、各フィールドは単一値だが、部分関数従属が存在し、単価が商品コードに依存しているため。
- 差がつくポイント:正規化の段階ごとの条件を正確に理解し、部分関数従属の有無を見抜くことが重要。
正解の理由
この表は、各列に単一の値が格納されており、繰り返しグループもないため第1正規形は満たしています。しかし、単価が商品コードに一意に定まるにもかかわらず、単価が受注番号や項番に依存しているため、部分関数従属が存在します。つまり、主キー(受注番号+項番)に対して単価は部分的に依存しているため、第2正規形は満たしていません。したがって、正解はイ: 第1正規形まで正規化されているです。
よくある誤解
単価が商品コードに依存していることを見落とし、単価も主キー全体に依存していると誤解しがちです。これにより第2正規形と判断してしまうことがあります。
解法ステップ
- 主キーを特定する(受注番号+項番)。
- 各列の値が単一であるか確認し、第1正規形を満たしているか判断。
- 非キー属性が主キーの一部にだけ依存していないか(部分関数従属)を調べる。
- 商品コードにより単価が決まるため、単価は主キーの一部(項番)に依存していると判断。
- 以上より、第2正規形は満たしていないと結論付ける。
選択肢別の誤答解説ステップ
- ア: 正規化は行われていない。
→ 繰り返しグループや複数値属性がないため、第1正規形は満たしている。 - イ: 第1正規形まで正規化されている。
→ 正しい。単一値属性で第1正規形は満たすが、部分関数従属があるため第2正規形は満たさない。 - ウ: 第2正規形まで正規化されている。
→ 単価が商品コードに依存し、主キーの一部に依存しているため部分関数従属が存在し誤り。 - エ: 第3正規形まで正規化されている。
→ 第2正規形を満たしていないため、第3正規形はさらに満たさない。
補足コラム
正規化はデータの冗長性を減らし、更新異常を防ぐための手法です。
- 第1正規形(1NF):すべての属性が単一値であること。
- 第2正規形(2NF):1NFを満たし、主キーの部分集合に依存する属性がないこと。
- 第3正規形(3NF):2NFを満たし、非キー属性間の推移的依存がないこと。
今回の例では、単価が商品コードに依存しているため、商品コードを別テーブルに分割することで2NF以上を満たせます。
FAQ
Q: なぜ単価は主キー全体ではなく部分キーに依存しているのですか?
A: 単価は商品コードによって一意に決まるため、主キーの一部である商品コードに依存し、主キー全体には依存していません。
A: 単価は商品コードによって一意に決まるため、主キーの一部である商品コードに依存し、主キー全体には依存していません。
Q: 第1正規形と第2正規形の違いは何ですか?
A: 第1正規形は属性が単一値であること、第2正規形はそれに加えて非キー属性が主キーの部分集合に依存しないことを意味します。
A: 第1正規形は属性が単一値であること、第2正規形はそれに加えて非キー属性が主キーの部分集合に依存しないことを意味します。
Q: 正規化を進めるメリットは何ですか?
A: データの冗長性を減らし、更新や削除時の異常を防止し、データ整合性を保ちやすくなります。
A: データの冗長性を減らし、更新や削除時の異常を防止し、データ整合性を保ちやすくなります。
関連キーワード: 正規化, 第1正規形, 第2正規形, 部分関数従属, データベース設計, 受注システム, 関係データベース