2012-10-01 28 views
11

爲什麼有損分解被稱爲有損?究竟我們在有損分解中損失了什麼?有損分解

有一個關係R.它被分解爲兩個關係R1和R2。

如果R =(R1 JOIN R2)那麼它是無損聯合分解。它是沒問題的。

如果R是(R1 JOIN R2)的子集,則有損聯合分解。

這裏是有損連接分解,在連接R1和R2之後,我們實際上得到的記錄比R多。所以我們失去了什麼。 ?

回答

28

由於我們正在處理某個實例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 Oak。在R1和R2的加入中,2222人或者生活在2橡樹或者3鬆 - 我們不再擁有這些信息。

這是如何額外的信息可以導致有損分解。 記錄沒有丟失 - 我們丟失的是信息關於哪些記錄是原始關係。

+0

感謝您的回答 – user1710986

+0

只是猜測,如果有損分解導致加入兩個關係後元組僅增加。連接兩個(有損分解)關係會導致元組數量減少嗎? – Mahesha999

+0

無損分解的定義與記錄或元組的數量無關 - 我們在這裏處理的組件是一個關係和兩個或更多的分解關係。但是要回答你的問題,有損分解不僅會導致記錄/元組增加。它也可能導致更少的記錄或相同數量的記錄。 – ithinkisam