スポンサーリンク

問題の解答・解説ページ

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

この問題をクイズ形式で解く
問題 No.2983
関係データベースの正規化の過程において、主キーが単一の属性ではなく複数の属性から構成される場合、第1正規化済みのリレーションから部分関数従属を取り除いて第2正規形にする利点として、最も適切なものはどれか。

【正解の解説】

主キーの一部を変更する際に発生するデータの不整合や更新時の異常を防止できる。

例えば「社員番号と商品番号」が主キーの表で、商品名が商品番号だけに依存している状態を想像してください。この時、商品名を変え忘れるとデータが矛盾してしまいますよね。第2正規化は、このように部分的に依存している無駄な重複を切り離すことで、一箇所を直すだけでデータ全体がきれいに連動する状態を作る、いわば帳簿の整理整頓テクニックです。

スポンサーリンク

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

すべての属性間で推移的関数従属を排除することで、検索処理にかかる実行時間を短縮できる。

初学者が最も混同しやすいのが「部分関数従属(第2正規形)」と「推移的関数従属(第3正規形)」の区別です。第2正規化は主キーの「一部」への依存を解消するものであり、A→B→Cのような「属性同士の連鎖的な依存」を取り除くのは、一段階先の第3正規化の役割になるため、この記述は誤りとなります。

リレーション内のタプル数が頻繁に増減する際に生じる、記憶容量の無駄な肥大化を抑制できる。

正規化を行うとテーブルが細かく分割されるため、一見するとファイルサイズが小さくなりそうに思えますが、実は逆に結合(ジョイン)が増えてパフォーマンスに影響することもあります。正規化の真の目的は、あくまで「データの矛盾を防ぎ、正しく管理すること」であり、ハードディスクの容量節約という物理的な最適化ではない点に注意が必要です。

結合処理の際に対象となる外部キーを明確にし、データモデル全体の参照整合性を担保できる。

参照整合性は「親子関係にあるテーブル間で、存在しないデータを指さないようにするルール」です。これは複数のテーブルをまたぐ設計の話であり、1つのテーブル内にある主キーと非主キーの関係を見直す第2正規化とはアプローチが異なります。用語の響きが難しいため、正規化の効果とごちゃ混ぜになりやすい典型的な出題者の罠です。