数据库之关系运算和完整性约束(软考中级)

1.关系模式

关系模型由关系数据结构,关系操作集合和完整性约束三部分组合

1.1关系模式基本术语

关系: 关系指的是一张二维表,每个关系有一个关系名。

元组: 表中的一行即为一个元组。

属性: 表中的列称为属性,每一个列有一个属性名。属性值相当于记录中的数据项或字段值。

域: 属性的取值范围。

关系模型: 关系的描述,由关系名和 属性集合构成,格式为:关系名(属性名1,属性名2,属性名3 …,属性名n)

候选码(候选键): 属性或者属性组合,其值能够唯一标识一个元组。

主码(主键): 在一个关系中可能有多个候选码,从中选出一个作为主码。

主属性: 在候选码中的属性称为主属性,不在的称为非主属性。

外码(外键): 如果一个关系中的属性或属性组不是该关系的码,但他们是另外一个关系的码,则称其为该关系的外码

全码: 一个关系模式中的所有属性都是候选码,则称全码。

超码(超键): 一个包含码的属性集称为超码,例如学号是码,则(学号,姓名)就是一个超码

image-20221029170114108

1.2关系模式完整性约束

  1. 实体完整性: 关系中的主码不能为空或者部分为空

  2. 参照完整性: 若一个关系R的外码是X,则这个关系R的外码必须在依赖的主码中必须存在,就好比学生信息中的专业编号,这个专业编号必须在另一个专业关系表中必须存在。

  3. 用户自定义完整性: 指用户对某一具体数据指定的约束条件进行检验。

1.3关系模型的集合操作

关系模型常用的操作有:选择,投影,连接,除,并,交,差等查询操作和增加,删除操作

1.3.1关系的数学定义

(1)笛卡尔积

image-20221029172424640

(2)关系( 不用看 )

image-20221029172452276

(3)关系的性质不用看 )

image-20221029172502003

1.3.2关系代数运算

关系代数是施加于关系之上的一组集合代数运算,每一个运算都以一个或多个关系作为运算对象,并生成另外一个关系作为该关系运算的结果。关系代数包含传统的集合运算和专门的关系运算两类

image-20221029172929719

(1)传统的集合运算

传统的集合运算有并,差,交和笛卡尔积运算

①并

关系R和关系S所有元组的集合,删除重复的元组,组成一个新的关系

②差

关系R和关系S中的差表示,除去关系R中S中的那部分元组,剩余的组成一个新的关系

③交

关系R和关系S中公共的那部分元组

④笛卡尔积

笛卡尔积参照上面解释,表示为R×S

例如:

image-20221029173818913

(2)专门的关系运算

①投影

image-20221029174316764

②选择

image-20221029174550452

③连接

image-20221029180157212

自然连接:

image-20221029181024493

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8DQa2lVD-1667040996286)(D:/%E6%A1%8C%E9%9D%A2/%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E5%B8%88%E8%B5%84%E6%96%99/image/%E6%95%B0%E6%8D%AE%E5%BA%93.assets/image-20221029181048140.png)]

image-20221029181105326

image-20221029181116123

自然连接:首先求出笛卡尔积,然后抽取出公共的属性列相等的元组,其得出的结果就是自然连接

④除

例题1:

image-20221029183021004

image-20221029183030369

答案:B,A

例题2:

image-20221029183611936

答案B

例题3:

image-20221029183936048

答案:C,D

例题4:

image-20221029184147827

答案:C,A

例题5:

image-20221029184327385

答案:C,B

例题6:

image-20221029184559303

答案:D

例题7:(易错)

image-20221029184658628

答案:B,D

例题8:

image-20221029184910077

答案:C,B

例题6:

image-20221029184559303

答案:D

例题7:(易错)

image-20221029184658628

答案:B,D

例题8:

image-20221029184910077

答案B

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
数据库关系代数运算有很多种,下面是一个例子: 假设有两个关系表: 表1:学生表(Student) | 学号 | 姓名 | 年龄 | 性别 | |------|------|------|------| | 001 | 张三 | 18 | 男 | | 002 | 李四 | 20 | 男 | | 003 | 王五 | 19 | 女 | 表2:成绩表(Score) | 学号 | 课程 | 成绩 | |------|------|------| | 001 | 数学 | 85 | | 002 | 数学 | 90 | | 003 | 数学 | 95 | | 001 | 英语 | 80 | | 002 | 英语 | 85 | | 003 | 英语 | 90 | 我们可以使用关系代数运算来进行一些操作,比如: 1. 投影(Projection):选择出指定的列 - 投影出学生表中的学号和姓名列,可以表示为:π_学号, 姓名(Student) 结果为: | 学号 | 姓名 | |------|------| | 001 | 张三 | | 002 | 李四 | | 003 | 王五 | 2. 选择(Selection):根据条件选择出满足条件的行 - 选择出成绩表中课程为数学的记录,可以表示为:σ_课程='数学'(Score) 结果为: | 学号 | 课程 | 成绩 | |------|------|------| | 001 | 数学 | 85 | | 002 | 数学 | 90 | | 003 | 数学 | 95 | 3. 连接(Join):将两个关系表按照指定的条件连接起来 - 将学生表和成绩表按照学号连接起来,可以表示为:Student ⨝_学号=学号 Score 结果为: | 学号 | 姓名 | 年龄 | 性别 | 课程 | 成绩 | |------|------|------|------|------|------| | 001 | 张三 | 18 | 男 | 数学 | 85 | | 001 | 张三 | 18 | 男 | 英语 | 80 | | 002 | 李四 | 20 | 男 | 数学 | 90 | | 002 | 李四 | 20 | 男 | 英语 | 85 | | 003 | 王五 | 19 | 女 | 数学 | 95 | | 003 | 王五 | 19 | 女 | 英语 | 90 | 这只是数据库关系代数运算的一部分,还有其他运算符和操作可以用来处理关系表的数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值