基本情報技術者試験 練習問題 3:正規化の目的と段階
データベースの正規化について述べた文として、正しいものはどれか。
- 第1正規形はすべての属性が原子的(分割不可能)でなければならないという制約を要求する。
- 第2正規形は第1正規形の条件に加えて、候補キー以外のすべての属性が候補キーに完全関数従属する条件を要求する。
- 第3正規形は第2正規形の条件に加えて、候補キー以外のすべての属性が候補キーに推移関数従属しない条件を要求する。
- 正規化を進めるほどデータベースの性能が向上するため、すべてのテーブルはボイス・コッド正規形まで正規化すべきである。
- 正規化によって異常が完全に排除されるため、アプリケーション側でのエラー処理は不要になる。
正解と解説を見る
正解:第3正規形は第2正規形の条件に加えて、候補キー以外のすべての属性が候補キーに推移関数従属しない条件を要求する。
データベースの正規化は、データの異常(挿入異常、削除異常、更新異常)を排除し、データの一貫性を保つためのプロセスです。
第1正規形(1NF):すべての属性が原子的(分割不可能)である。複数値属性や繰り返し属性がない状態。
第2正規形(2NF):第1正規形に加えて、非キー属性が候補キーに完全関数従属している。部分関数従属(複合キーの一部のみに従属)がない。
第3正規形(3NF):第2正規形に加えて、非キー属性が候補キーに推移関数従属しない。非キー属性間の関数従属がない。例えば「学生→学科ID」「学科ID→学科名」という推移関数従属があれば、学科情報を別テーブルに分離します。
正しいのは「第3正規形は第2正規形の条件に加えて、候補キー以外のすべての属性が候補キーに推移関数従属しない条件を要求する」です。
正規化が進むほどテーブル数が増え、JOIN操作が必要になるため性能が低下する場合もあります。実務では要件に応じて適切な正規化レベルを判断します。