問題 No.2047
関係データベースの正規化における「第4正規化」の定義として、最も適切なものはどれか。
【正解の解説】
リレーションにおいて自明ではない多値従属が存在する場合に、それらを別々のテーブルに分解すること。
例えば、1人の社員が複数の「趣味」と複数の「資格」をバラバラに持っているとき、一つの表で管理すると組み合わせが爆発的に増えてデータが重複します。これを「趣味の表」と「資格の表」にスパッと切り分けるのが第4正規化です。1対多の関係が1対多のペアで複数絡み合う複雑な糸をほどく作業だとイメージしてください。
スポンサーリンク
【その他の選択肢の解説】
リレーションにおいて関数従属性に基づく部分関数従属が存在する場合に、それらを別々のテーブルに分解すること。
初学者が最も混同しやすい第2正規化の説明です。部分関数従属は「複合主キーの一部だけに依存している状態」を指し、これを解消するのが第2正規化です。多値従属を扱う第4正規化とは、対象としているデータの結びつきの複雑さがまったく異なるため、混同しないよう注意が必要です。
リレーションにおいて推移的関数従属が存在する場合に、それらを主キーの決定要因ごとに別々のテーブルに分解すること。
第3正規化で解消する「推移的関数従属」の説明です。「社員番号→部署コード→部署名」のように、キー以外の項目を経由してデータが決まる無駄を省く操作です。多値従属を解消する第4正規化とステップが混ざりやすいため、何段階目の正規化でどの依存関係を壊すのかを整理して覚えることが合格のコツです。
リレーションにおいて候補キーの組が複数存在する場合に、すべての属性間における一意な従属関係を整理すること。
候補キーや属性間の関係全般に言及していますが、特定の正規化ステップの正式な定義ではありません。試験では、このようにそれっぽい専門用語を並べ立てて受験者を不安にさせる罠がよく出題されます。多値従属というキーワードを見たら「第4正規化だ!」と即座に結びつけられるようにしましょう。