忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【データベース】元通りに復元できる!「無損失分解」の定義|情報処理問題1000本ノック

テーブルの正規化などで表を分割する際、ただ分ければいいというわけではありません。元の情報を完全に保持したまま分割できているか。それが「無損失分解」のポイントです。

1. 問題:情報が損なわれない分割の条件

【 問題 】 関係データベースにおいて、一つの表を二つ以上の表に分割(分解)した後、それらを自然結合させた結果が、元の表と完全に一致するような分割のことを何と呼ぶでしょうか?

① 垂直分解   ② 無損失分解   ③ 直積分解   ④ 正規化分解

2. 正解:正規化理論に関する正解

正解: ② 無損失分解

3. 解説:自然結合で元に戻せるか

テーブルを分割する際、適切なキー(共通の列)を残さずに分けると、後で結合したときに元の情報が復元できなくなったり、余計な行(偽のタプル)が発生したりします。「無損失分解」とは、分解しても情報の損失がなく、自然結合によって元の表を一意に再現できる性質を指します。

[ 無損失分解のポイント ]
定義:分解された表を自然結合すると、元の表と等しくなること。
条件:分解する際の共通属性が、少なくとも一方の表の主キー(または候補キー)である場合に成立します。

[ 関連用語の整理 ]
正規化:冗長性を排除し、更新異常を防ぐために表を分割するプロセス。
関数従属性:ある属性の値が決まれば、他の属性の値も一意に決まる関係。
結合従属性:表をいくつかの部分に分解し、それらを再結合しても元の表を再現できる性質。

1. 理解のコツ: 「無損失」という言葉から、単純に「データが消えない」ことだと思われがちですが、実際には「結合したときに余計なデータが増えない(元の関係が壊れない)」ことも含まれます。パズルをバラバラにしても、正しく組み直せる仕組みが備わっている状態です。
2. 試験対策の視点: 第2正規形や第3正規形への分解は、すべてこの「無損失分解」であることが前提です。高度試験では、「表R(A, B, C)をR1(A, B)とR2(A, C)に分解したとき、無損失分解となる条件は?」といった形式で、関数従属性と絡めて問われることが多いです。


4. まとめ

「分割した表をくっつけたら、元通りになる」。これが無損失分解の核となる定義です。データベースの整合性を保ちながら、正しく正規化を行うための必須条件であることを押さえておきましょう!



PR