正規化を理解する

正規化は、データの重複と更新時の不整合を減らすため、関数従属性に基づいて表を分解する考え方である。第1〜第3正規形の違いを具体例で整理する。

この単元で学ぶこと

  • 第1正規形の意味と役割を説明できる
  • 完全関数従属の意味と役割を説明できる
  • 部分関数従属の意味と役割を説明できる
  • 第1〜第3正規形を関数従属性から判断できる

本文解説

第1正規形は繰返し項目や非原子的な値をなくす。第2正規形は複合キーの一部だけに依存する非キー属性を分離する。第3正規形は非キー属性が別の非キー属性へ依存する推移的従属を分離する。

第1正規形 各属性に原子的な値を持たせ、繰返し項目を排除した状態。 一セルに複数値を詰め込まない。

完全関数従属 複合キー全体に依存し、キーの一部だけでは決まらない関係。 第2正規形判断で重要。

部分関数従属 複合キーの一部だけで非キー属性が決まる関係。 第2正規形で分離対象。

推移的従属 主キー→非キー属性→別の非キー属性の依存。 第3正規形で分離対象。

更新時異常 重複データにより更新・挿入・削除で矛盾が生じる問題。 正規化の主要な動機。

主キーを特定し、非キー属性が何に依存するか矢印で書く。複合キーの一部依存なら第2、非キー経由なら第3を疑う。

受注明細(受注ID,商品ID,受注日,商品名,数量)では、受注日が受注IDだけに、商品名が商品IDだけに依存するため部分関数従属がある。

図解

正規化の依存関係
複合キーの一部依存と、非キー属性を経由する推移的依存を分けて示す。

重要ポイント

  • 第1正規形: 各属性に原子的な値を持たせ、繰返し項目を排除した状態。
  • 完全関数従属: 複合キー全体に依存し、キーの一部だけでは決まらない関係。
  • 部分関数従属: 複合キーの一部だけで非キー属性が決まる関係。
  • 推移的従属: 主キー→非キー属性→別の非キー属性の依存。
  • 正規形の名前より、どの属性がどのキーに依存するかを追う。

間違えやすい点

  • 表を細かく分ければ自動的に正規化完了と考えない。
  • 第2正規形は複合キーがない表では問題になりにくいことを忘れない。
  • 性能最適化のための非正規化と正規化目的を混同しない。

用語解説

第1正規形
各属性に原子的な値を持たせ、繰返し項目を排除した状態。
完全関数従属
複合キー全体に依存し、キーの一部だけでは決まらない関係。
部分関数従属
複合キーの一部だけで非キー属性が決まる関係。
推移的従属
主キー→非キー属性→別の非キー属性の依存。
更新時異常
重複データにより更新・挿入・削除で矛盾が生じる問題。

関連教材

参考資料

教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。

確認問題の出題・採点や学習履歴の保存にはログインが必要です。