为什么有损分解称为有损?
在有损分解中我们会失去什么?
有一个关系R。它被分解为两个关系R1和R2。
如果 R = (R1 JOIN R2) 那么它是无损连接分解。
如果 R 是 (R1 JOIN R2) 的子集,那么它是有损连接分解。
在有损连接分解中,连接 R1 和 R2 后,与 R 相比,我们获得了更多记录。
我们失去了什么?
由于我们正在处理某个实例 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——我们不再有这个信息。
这就是额外信息如何导致有损分解的原因。 记录并没有丢失——我们丢失的是关于哪些记录属于原始关系的信息。