メインコンテンツへ
データベース

関係データベースの正規化に関する記述として、適切なものはどれか。

ア.第1正規形とは、全ての列の値が原子的(繰り返しグループや多値を持たない)であるテーブルである。正解
イ.第2正規形とは、第1正規形を満たし、かつ推移的関数従属が排除されたテーブルである。
ウ.第3正規形とは、第2正規形を満たし、かつ部分関数従属が排除されたテーブルである。
エ.正規化を進めるほど、一般にクエリのパフォーマンスが向上し、JOIN操作が減少する。

解説

正規化は「引っ越しの荷物を整理整頓する作業」。まず箱に詰めるとき一種類ずつにする(第1正規形)、次に主キーに直接関係のないものを別箱にする(第2正規形)、さらに間接的な関係も別箱にする(第3正規形)、と段階的にすっきりさせます。

なぜ ア が正解か

第1正規形は「各セルに値が1つだけ(原子的)」であること。例えばCSV形式で「趣味:野球,サッカー,水泳」を1セルに詰め込んだテーブルは第1正規形違反です。繰り返しグループを排除して、各行と列の交点に単一の値が入るようにすることが第1正規化のゴールです。

なぜ イ は間違いか

推移的関数従属を排除するのは第3正規形の条件です。第2正規形は「第1正規形を満たし、かつ部分関数従属を排除」したものです。「推移的」と「部分的」を入れ替えた典型的なひっかけです。

なぜ ウ は間違いか

部分関数従属を排除するのは第2正規形の条件です。第3正規形は「第2正規形を満たし、かつ推移的関数従属を排除」したものです。イとウで第2/第3の説明が入れ替わっています。

なぜ エ は間違いか

正規化を進めるとテーブルが分割されるため、クエリ時にJOIN操作が増え、一般にパフォーマンスは低下する傾向があります。正規化はデータ整合性・冗長排除が目的であり、速度向上が目的ではありません。性能が重要な場合はあえて非正規化(デノーマライズ)することもあります。

出典: AI生成問題(学習用)