数据库集合运算与关系代数

一:域:具有一组相同类型的数据集合。

D1=姓名集合(NAME)={yang,li}  
D2=年龄集合(AGE)={17,18}  

二:笛卡尔积:域上定义的一种集合运算,就是将每个域中的元素与其它域中的元素分别去组合,组合得到的笛卡尔积中每一个元素叫做一个元组。如图,是D1和D2的笛卡尔积。

NAMEAGE
yang17
yang18
li17
li18

三:关系:在笛卡尔积中取出一个子集,可以构成关系。关系中的每个元素是关系中的元组,关系是笛卡尔积的真子集。

在D1XD2中取出来一个关系如下所示,关系才是有意义的。
NAMEAGE
yang17
li18

四:键

  • 候选键:某个能唯一标识一个元组的属性值或者域称为候选键。
  • 主键:从候选键中选出一个键成为主键。
  • 全键:所有的属性组或者域是这个元组的候选键,我们叫全键。
  • 外键:Y是R关系中的属性组,但不是R关系中的主键,但是是S关系中的主键,此时Y就叫做R关系的外键。

五:数据库的三条完整性规则

(1):实体完整性:若属性A是关系R的主属性,则A不能取空值。

学生(学号,姓名,性别,专业号)  学号为主键,则学号一定不能为空。

(2):参照完整性:回忆外键的定义,若F是关系R的外键,它与关系S主键相对应,对于R中的每个元组在F上的取值,要么等于S中的主键值,要么为空 。

   学生(学号,姓名,性别,专业号) 主键:学号  
   专业(专业号,专业名)  主键:专业号  
   这里的专业号是学生的外键,它与专业的主键相对应,因此学生专业号就有两种取值,一是其专业对应中的专业号,二是空,表示此学生目前没有被分配专业。  

(3):用户定义的完整性:任何数据库都应该支持实体完整性和参照完整性,并且对于不同的应用我们应该加一些别的约束条件。

六:关系代数

1:并,差,交 按照我们普通的集合运算的方式理解就好了。

2:笛卡尔积也是这样的一种操作,m元关系就是有m个域。m元关系和n元关系进行笛卡尔积得到(m+n)元关系。

3:选择:选出在关系R中满足给定条件的诸元组。

4:投影:选出列组成新的关系,会指定选择的列号和集合名称。

5:连接:从两个关系的笛卡尔积中选取属性间满足一定条件的元组。

  • 自然连接:自然连接是特殊的等值连接,它会去掉相同的属性组。

  • 等值连接:条件是从R和S的笛卡尔积中选取A,B属性值相等的元组。

  • 外连接:把应该舍弃的全部保留下来,在其他对应属性上用null。

6:除:对于两个关系R(X,Y)和S(Y,Z),R/S得到的是R在X上满足下面条件的投影,条件是:元素在X分量上x的象集包括S在Y投影上的集合。有关象集的定义在下面:

R:

ABC
a1b1c2
a2b1c2
a3b4c6
a1b2c1
a4b6c6
a2b2c1

S:

BCD
b1c2d1
b2c1d1

X的象集是针对R中x的每一个取值而言的:实际上就是对应Y关系上的取值,X关系是A,Y关系是B和C。

a1的象集:(b1,c2)(b2,c1)
a2的象集:(b1,c2)(b2,c1)
a3的象集:(b4,c6)
a4的象集:(b6,c6)

找到了X分量上x的象集,我们继续找S在Y投影上的集和,在S关系中,S在Y关系上(也就是B和C关系上)的投影为:

(b1,c2)(b2,c1)

下面我们只用x的象集和S在Y关系上的投影({(b1,c2)(b2,c1)})进行对比就行了,发现只有a1和a2的象集包含这个投影,也就是R/S= {a1,a2}

现在我们会计算除法了,它到底有什么意义:除的意义在于查询全部,就像我们的a的象集中完全包括S在Y关系上的投影的a的值才能被选出来,它们是完全符合S元素的。

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
【完整Oracle SQL开发教程课件如下】 数据库开发 Oracle数据库 SQL开发教程 第0章 开篇概述(共14页).pdf 数据库开发 Oracle数据库 SQL开发教程 第01章 Oracle数据库基础(共60页).pdf 数据库开发 Oracle数据库 SQL开发教程 第02章 编写简单的查询语句(共34页).pdf 数据库开发 Oracle数据库 SQL开发教程 第03章 限制数据和对数据排序(共37页).pdf 数据库开发 Oracle数据库 SQL开发教程 第04章 单行函数(共61页).pdf 数据库开发 Oracle数据库 SQL开发教程 第05章 多表连接(共48页).pdf 数据库开发 Oracle数据库 SQL开发教程 第06章 分组函数(共41页).pdf 数据库开发 Oracle数据库 SQL开发教程 第07章 子查询(共49页).pdf 数据库开发 Oracle数据库 SQL开发教程 第08章 集合运算(共20页).pdf 数据库开发 Oracle数据库 SQL开发教程 第09章 高级子查询(共23页).pdf 数据库开发 Oracle数据库 SQL开发教程 第10章 层次查询(共17页).pdf 数据库开发 Oracle数据库 SQL开发教程 第11章 数据操作与事务控制(共52页).pdf 数据库开发 Oracle数据库 SQL开发教程 第12章 Oracle数据库网络连接(共39页).pdf 数据库开发 Oracle数据库 SQL开发教程 第13章 创建和维护表(共37页).pdf 数据库开发 Oracle数据库 SQL开发教程 第14章 约束(共33页).pdf 数据库开发 Oracle数据库 SQL开发教程 第15章 视图(共23页).pdf 数据库开发 Oracle数据库 SQL开发教程 第16章 序列、索引、同义词(共34页).pdf 数据库开发 Oracle数据库 SQL开发教程 第17章 用户、权限和角色(共28页).pdf

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨博东的博客

请我喝瓶可乐鼓励下~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值