関数従属性・正規化理論 重要度:★★出題: AM2・PM1
無損失結合分解と関数従属性保存(正規化分解の正当性条件)
むそんしつけつごうぶんかいとかんすうじゅうぞくせいほぞん / Lossless-Join Decomposition & Dependency Preservation
関係Rを複数の関係R1, R2に分解したとき、自然結合によって元の関係Rが過不足なく(スプリアスタプルを生じずに)復元できる性質(無損失結合)と、元の関数従属性が各分解関係内で検証できる性質。
3行速習ポイント
- 関係R(A, B, C)をR1(A, B)とR2(B, C)に分解したとき、共通属性BがR1またはR2の少なくとも一方の候補キー(決定項:B → A または B → C)であれば無損失結合分解となる
- 無損失結合でない分解(損失分解)を行うと、自然結合した際に本来存在しなかった偽の行(スプリアスタプル)が発生してしまう
- 第3正規形への合成アルゴリズムによる分解では、無損失結合性と関数従属性保存の両方を常に同時に達成できる
図解
図無損失結合分解(ヒースの定理)と損失分解の判定
無損失結合分解(X → Y が成立時)完全復元
R(X,Y,Z) を R1(X,Y) と R2(X,Z) に分解。共通属性Xが決定項なので自然結合で完全復元
損失分解(非決定項での分解)偽行発生
共通属性が決定項でない分解では、自然結合時に偽のタプル(スプリアスタプル)が混入
概要と本質
午前IIの正規化理論・関係スキーマ分解問題で頻出の定理(ヒースの定理:Heath's Theorem)です。「関係Rをどの2つの関係に分解すれば無損失結合分解になるか」を判定する問題でそのまま使います。
重要ポイント・コア概念
- ヒースの定理:関係 R(X, Y, Z) において関数従属 X → Y が成り立つとき、R1(X, Y) と R2(X, Z) への分解は必ず無損失結合分解である
- 判定のコツ:分解後の2つの関係の「共通属性」を取り出し、その共通属性から一方の残り属性への関数従属(共通属性 → 片方の属性)が成立しているかを見る
- スプリアスタプル(Spurious Tuple):非決定項を共通属性として誤って分解した関係を自然結合した際に生じる余分なタプル
午後I・午後II記述試験での攻略ポイント
午前IIで「無損失結合分解となるものはどれか」が出たら、2つのテーブルの共通列(重なっている列)が、片方のテーブルで矢印の左辺(決定項)になっている選択肢を選べば100%正解です。
午後記述で使える加点キーワード(クリックでコピー)
この用語が出題された過去問を解く(1分演習)
即時アウトプットで定着データベーススペシャリスト 過去問演習で実践力を鍛える