为什么有损分解称为有损?

问题描述 投票:0回答:1

为什么有损分解称为有损?

在有损分解中我们会失去什么?

有一个关系R。它被分解为两个关系R1和R2。

如果 R = (R1 JOIN R2) 那么它是无损连接分解。

如果 R 是 (R1 JOIN R2) 的子集,那么它是有损连接分解。

在有损连接分解中,连接 R1 和 R2 后,与 R 相比,我们获得了更多记录。

我们失去了什么?

database database-normalization
1个回答
35
投票

由于我们正在处理某个实例 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 Oak,要么住在 3 Pine——我们不再有这个信息。

这就是额外信息如何导致有损分解的原因。 记录并没有丢失——我们丢失的是关于哪些记录属于原始关系的信息

© www.soinside.com 2019 - 2024. All rights reserved.