スポンサーリンク

問題の解答・解説ページ

このページは解説の閲覧モードです。
実力試しをしたい方は、下のボタンからクイズに挑戦してください!

この問題をクイズ形式で解く
問題 No.1900
関係データベースの正規化の過程における各段階の特性に関して、不適切なものはどれか。

【正解の解説】

第1正規化を適用したリレーションでは、すべての非キー属性が主キーに対して部分関数従属している状態になっている。

学校の時間割表を想像してください。クラスと曜日・時限の組み合わせが主キーの場合、教室名は曜日・時限だけに依存する「部分関数従属」が生じます。第1正規化の目的は、こうした「繰り返し項目をなくし、セルに一つの値だけを入れる(原子値にする)」ことなので、部分関数従属を解消するのは次の第2正規化の仕事になります。したがって、第1正規化の段階ではまだ部分関数従属が残っている状態が正しいのです。

スポンサーリンク

【その他の選択肢の解説】

第2正規化を適用したリレーションでは、主キーの一部に対する非キー属性の部分関数従属がすべて排除されている。

試験では「第1正規化で部分関数従属が消える」という引っかけがよく出ますが、第2正規化の段階で初めて部分的な依存が排除されます。例えば、社員番号とプロジェクト番号の組み合わせが主キーのとき、社員名や部署名は社員番号だけで決まります。この「主キーの一部だけで決まるムダ」を削ぎ落としてスッキリさせるのが第2正規化の本質です。

第3正規化を適用したリレーションでは、主キー以外の属性間における非キー属性の推移的関数従属が排除されている。

「社員番号→所属部署コード→部署名」という関係があった場合、社員番号から直接部署名が決まるのではなく、部署コードを挟んで決まっています。この「A→B→C」というドミノ倒しのような推移的関数従属を切り離して、データの独立性を高めるのが第3正規化の役割です。主キー以外の横のつながりによる依存を断ち切る点がポイントです。

ボイス・コッド正規化を適用したリレーションでは、すべての関数従属において決定子が候補キーである状態になっている。

通常の第3正規化では防ぎきれない、候補キーが複数ある複雑なテーブルの重なりを解消するための上位の正規化手法です。データの矢印(関数従属)の出発点(決定子)をすべて「主役(候補キー)」に格上げすることで、データの矛盾や更新時の不整合を徹底的に排除します。正規化のステップアップにおいて最も条件が厳しい最終防衛ラインのようなものです。