在数据库管理系统 (DBMS) 中,数据通过属性和元组(即列和行)以表格形式表示。
我们可以对表执行各种操作(插入、删除、更新、修改等)。一种这样的操作是加入。当我们将两张表合二为一时,我们称之为连接,用⨝表示。
伪元组:
虚假元组是表中的那些行,它们是由于以错误的方式连接两个表而发生的。它们是可能不需要的额外元组(行)。
如果关系用R表示,其分解的关系用R1、R2、R3….Rn表示,那么,没有得到任何Spurious Tuple的条件表示为,
R1 ⨝ R2 ⨝ R3 .... ⨝ Rn = R
而获得虚假元组的条件表示为,
R ⊂ R1 ⨝ R2 ⨝ R3 .... ⨝ Rn
示例 1:
检查给定关系是否包含虚假元组的示例。
设R为Relation,R1和R2为分解R后得到的关系。
对关系 R1 和 R2(R1 ⨝ R2)进行连接操作后,我们得到原始关系 R。
满足无伪元组的条件 R1 ⨝ R2 = R。因此,我们没有得到任何虚假元组。
结论 –不存在虚假元组。
示例 2:
检查给定关系是否包含虚假元组的示例。
设R为Relation,R1和R2为分解R后得到的关系。
在对关系 R1 和 R2(R1 ⨝ R2)进行连接操作后,我们没有找回原来的关系 R。
满足伪元组的条件 R ⊂ R1 ⨝ R2。因此,我们得到了伪元组。
结论 –存在虚假元组。
笔记 –
DBMS 中的行称为元组。而 DBMS 中的列称为属性。虚假元组可以作为表中的额外行被记住。导致虚假元组的自然连接称为有损连接。不会产生虚假元组的自然连接称为无损连接。