web-dev-qa-db-ja.com

非可逆分解

非可逆分解が非可逆と呼ばれるのはなぜですか?非可逆分解で正確に何が失われますか?

関係Rがあります。それは2つの関係R1とR2に分解されます。

r =(R1 JOIN R2)の場合、それはロスレス結合分解です。大丈夫です。

rが(R1 JOIN R2)のサブセットである場合、不可逆結合分解。

これが不可逆結合分解です。結合R1とR2の後、実際にはRと比較してより多くのレコードを取得しています。つまり、何が失われているのでしょうか。 ?

14
user1710986

あるインスタンスRを扱っているので、リレーションには固定数のレコードが含まれています。また、どのレコードが存在しないかに関する情報も暗黙的に含まれています。 R1とR2の結合によって余分なレコードが生成されると、情報の整合性が失われます。

次の関係R =(SSN、名前、住所)を使用していたとします。

           R
SSN     Name      Address
1111    Joe       1 Pine
2222    Alice     2 Oak
3333    Alice     3 Pine

R1 =(SSN、名前)およびR2 =(名前、アドレス)とします。

     R1                     R2
SSN     Name     |     Name    Address
1111    Joe      |     Joe     1 Pine
2222    Alice    |     Alice   2 Oak
3333    Alice    |     Alice   3 Pine

R1とR2を結合すると、次のテーブルが生成されます。

       R1 join R2
SSN     Name      Address
1111    Joe       1 Pine
2222    Alice     2 Oak
2222    Alice     3 Pine
3333    Alice     2 Oak
3333    Alice     3 Pine

この例で失われた情報は、人物2222と3333の住所です。元の関係Rでは、人物2222は2オークに住んでいます。 R1とR2の結合では、人2222は2オークまたは3パインのいずれかに住んでいます。この情報はもうありません。

これは、余分な情報が不可逆分解につながる可能性がある方法です。 レコードは失われませんでした-私たちが失ったのは情報どのレコードが元の関係にあったかについてでした。

33
ithinkisam