数据库基础(1)关系的布尔运算:数据集的并,交,差,补和有效补运算 | 您所在的位置:网站首页 › 对于关系s和关系r进行集合运算 › 数据库基础(1)关系的布尔运算:数据集的并,交,差,补和有效补运算 |
关系的布尔运算主要包括:并,交,差,广义笛卡尔积,补,有效补 并集定义: 关系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的元组数) 例子: 关系模式R(A1,A2,…,An), R上的关系r。 补运算:设dom( R )表示模式R上的所有元组的集合,则关系r的补为: r的补集 = dom( R )-r 我们可以按照数学里的补集来理解,其实就是 (集合r + r的补集 = 全集) ,只不过这里的全集是关系R上的所有元组的集合 例题:
第二步 理解有效值域。关系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个学生不选, 则存储选修了数据库课的学生可用存储其有效补实现。 最后再来做一道例题吧
|
CopyRight 2018-2019 实验室设备网 版权所有 |