ある企業のデータアーキテクトが、第3正規形(3NF)のデータベース設計について説明している。第3正規形を満たすために除去すべき依存関係として正しいものはどれか。
- A. 主キーへの部分関数従属:複合主キーのうち一部のキーに対して非キー属性が従属している状態
- B. 推移的関数従属:非キー属性が別の非キー属性を介して主キーに間接的に従属している状態
- C. 繰り返しグループ:1つのセルに複数の値が格納されている非原子値の状態
- D. 多値従属:主キーに対して独立した複数の多値属性が存在する状態
解答と解説を見る
正解: B
第3正規形(3NF)は第2正規形(2NF)を満たした上で、推移的関数従属を排除することで達成される。推移的関数従属とは、「主キー → 非キー属性A → 非キー属性B」というように、非キー属性Aを介してBが主キーに間接的に従属している状態である(例:受注テーブルで「受注ID → 顧客ID → 顧客の都道府県」)。これを別テーブルに分離することで3NF を達成する。主キーへの部分関数従属(選択肢A)は第2正規形(2NF)で除去すべき依存関係であり、3NF の主要対象ではない。繰り返しグループ(選択肢C)は第1正規形(1NF)の要件であり、原子値を確保することで対処する。多値従属(選択肢D)は第4正規形(4NF)で対処する依存関係であり、3NF の対象外である。