数据库基础(1)关系的布尔运算:数据集的并,交,差,补和有效补运算

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Candle_light/article/details/84313631

关系的布尔运算主要包括:并,交,差,广义笛卡尔积,补,有效补

并集

定义: 关系R和S的并集结果,由属于R或属于S的所有元组组成,其结果是一个新关系。记为:

Q = R ∪ S = {t | t ∈ R 或 t ∈ S }

例子: 注意! 这个并集求出来是不含重复元组的!例如虽然R和S都含有(a1,b2,c2),但是合并的结果中,只出现一次(a1,b2,c2)
并集

差集

定义: 关系R和S的差由属于R但不属于S的所有元组组成。记为:
Q = R - S = {t | t ∈ R 但 t ∉ S }
例子
差集

交集

定义: 关系R和S的交集结果由既属于R又属于S的所有元组组成。记为:
Q = R ⌒ S = {t | t ∈ R 且 t ∈ S }
交集

广义笛卡尔积

关系R和关系S的笛卡尔积为R中所有元组和S中所有元组的串接。
结果关系的属性个数:k1+k2 (k1和k2分别为关系S的属性数)
结果关系的元组数: m x n (m和n分别为R和S的元组数)
例子:
广义笛卡尔积

补集和有效补集

1.首先看看补集定义:

关系模式R(A1,A2,…,An), R上的关系r。
补运算:设dom( R )表示模式R上的所有元组的集合,则关系r的补为:
r的补集 = dom( R )-r
我们可以按照数学里的补集来理解,其实就是 (集合r + r的补集 = 全集) ,只不过这里的全集是关系R上的所有元组的集合
例题:
补集
这道题,我们首先要知道关系R上的全集(全部元组)是什么,然后用全集减去r,就可以得到r的补集了
R上的全集是A和B的广义笛卡尔积,即:
R=(A,B)={(a1,b1),(a1,b2),(a2,b1),(a2,b2),(a3,b1),(a3,b2)}
所以用R中的元组减去r 即可得到r补集

2.有效补集

定义

有效补集的定义看上去太麻烦,我们这里直接以一道题来讲怎么求有效补

例题
第一步 求出R: R=(A,B)={(a1,b1),(a1,b2),(a2,b1),(a2,b2),(a3,b1),(a3,b2)}

第二步 理解有效值域。关系r的有效值域是指,关系r中各个属性的取值范围。比如说我们这道题里面的r ,它的属性A的属性取值范围是(a1,a2),属性B的取值范围是(b1,b2),所以r元组的有效值域就是(A,B)={A ∈ (a1,a2) 且 B ∈ (b1,b2)}。 因此我们求有效补集的全集就不再是R,而是R*R* 中属性的值域就是r的有效值域。

第三步 根据r的有效值域和R*求r的有效补集。首先根据r的值域范围,得到R*,即,将R中只含有(a1,a2)和(b1,b2)的元组取出来(注意:不取含属性a3的元组,因为属性a3不在r的范围中),R*={(a1,b1),(a1,b2),(a2,b1),(a2,b2)}
于是,r的有效补集= R*-r ={(a1,b1),(a1,b2),(a2,b1),(a2,b2)} - {(a1,b1),(a1,b2),(a2,b1)}={(a2,b2)}

有效补的应用:当关系元组数比其有效补元组数多得多时,有效补可作为数据压缩手段。
例如:学生选课,一个班有50个学生选数据库课,3个学生不选, 则存储选修了数据库课的学生可用存储其有效补实现。

最后再来做一道例题吧

例题
(1)求补集
首先计算R,即A,B,C的笛卡尔积,R= A x B x C = {(a1,b1,c1),(a1,b1,c2),(a1,b2,c1),(a1,b2,c2),(a1,b3,c1),(a1,b3,c2),(a2,b1,c1),(a2,b1,c2),(a2,b2,c1),(a2,b2,c2),(a2,b3,c1),(a2,b3,c2)}
所以r的补集=R-r = {(a1,b1,c2),(a1,b2,c1),(a1,b2,c2),(a1,b3,c1),(a1,b3,c2),(a2,b1,c2),(a2,b2,c2),(a2,b3,c2)}
(2)求有效补
首先确定r的有效值域: r中属性A的范围是(a1,a2),属性B的范围是(b1,b2,b3),属性C的范围是(c1)
所以可以得到R*={(a1,b1,c1),(a1,b2,c1),(a1,b3,c1),(a2,b1,c1),(a2,b2,c1),(a2,b3,c1)}
因此r的有效补集=R*-r = {(a1,b2,c1),(a1,b3,c1)}

猜你喜欢

转载自blog.csdn.net/Candle_light/article/details/84313631