正規化を理解する
正規化は、データの重複と更新時の不整合を減らすため、関数従属性に基づいて表を分解する考え方である。第1〜第3正規形の違いを具体例で整理する。
この単元で学ぶこと
- 第1正規形の意味と役割を説明できる
- 完全関数従属の意味と役割を説明できる
- 部分関数従属の意味と役割を説明できる
- 第1〜第3正規形を関数従属性から判断できる
本文解説
第1正規形は繰返し項目や非原子的な値をなくす。第2正規形は複合キーの一部だけに依存する非キー属性を分離する。第3正規形は非キー属性が別の非キー属性へ依存する推移的従属を分離する。
第1正規形 各属性に原子的な値を持たせ、繰返し項目を排除した状態。 一セルに複数値を詰め込まない。
完全関数従属 複合キー全体に依存し、キーの一部だけでは決まらない関係。 第2正規形判断で重要。
部分関数従属 複合キーの一部だけで非キー属性が決まる関係。 第2正規形で分離対象。
推移的従属 主キー→非キー属性→別の非キー属性の依存。 第3正規形で分離対象。
更新時異常 重複データにより更新・挿入・削除で矛盾が生じる問題。 正規化の主要な動機。
主キーを特定し、非キー属性が何に依存するか矢印で書く。複合キーの一部依存なら第2、非キー経由なら第3を疑う。
受注明細(受注ID,商品ID,受注日,商品名,数量)では、受注日が受注IDだけに、商品名が商品IDだけに依存するため部分関数従属がある。
図解
重要ポイント
- 第1正規形: 各属性に原子的な値を持たせ、繰返し項目を排除した状態。
- 完全関数従属: 複合キー全体に依存し、キーの一部だけでは決まらない関係。
- 部分関数従属: 複合キーの一部だけで非キー属性が決まる関係。
- 推移的従属: 主キー→非キー属性→別の非キー属性の依存。
- 正規形の名前より、どの属性がどのキーに依存するかを追う。
間違えやすい点
- 表を細かく分ければ自動的に正規化完了と考えない。
- 第2正規形は複合キーがない表では問題になりにくいことを忘れない。
- 性能最適化のための非正規化と正規化目的を混同しない。
用語解説
- 第1正規形
- 各属性に原子的な値を持たせ、繰返し項目を排除した状態。
- 完全関数従属
- 複合キー全体に依存し、キーの一部だけでは決まらない関係。
- 部分関数従属
- 複合キーの一部だけで非キー属性が決まる関係。
- 推移的従属
- 主キー→非キー属性→別の非キー属性の依存。
- 更新時異常
- 重複データにより更新・挿入・削除で矛盾が生じる問題。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
確認問題の出題・採点や学習履歴の保存にはログインが必要です。