第二章 关系模型和关系运算理论 3类完整性

在这里插入图片描述

1.关系模型的基本概念

用二维表格(关系)作为数据结构的数据模型,称为关系模型,其中实体及实体之间的联系均用关系表示。

1.关系模型的三大要素

1)关系模型的结构 —关系
2)关系模型的操作—关系运算
3)关系模型的 完整性约束—三类完整性约束

2.关系的数学定义:
  1. 的定义:域是一组具有相同数据类型的值的集合。
  2. 笛卡儿积的定义:给定一组域D1,D2,…,Dn,(可以有相同的部分),它们的笛卡儿积为:
    D 1 × D 2 × … × D n D1×D2×…×Dn D1×D2××Dn= ( d 1 , d 2 , … , d n ) | d i ∈ D i , i = 1 , 2 , … , n { ( d_1, d_2, …, d_n)|d_i ∈D_i, i=1, 2, …, n } (d1,d2,,dn)diDi,i1,2,,n
    其中:每一个元素(d1,d2,…,dn )称为一个n元组,简称元组。元素中的每一个值di称作一个分量。
    在这里插入图片描述
  3. **关系(Relation)**的定义:D1 ×D2 ×…×Dn的子集称作在域D1,D2,…,Dn上的关系,表示为:
    R(D1,D2,…,Dn)这里:R表示关系的名字,n是关系的目或度。
2.关系的数学定义
关系中的基本术语

1.元组(tuple):关系表中的每一横行称作一个元组,组成元组的元素为分量。
2.属性(Attribute ):关系中的每一列称为一个属性。
3.关系模式(Schema):对关系的描述(哪些列)称为关系模式。
4.关系实例(instance):在一个时刻关系的状态(由包含的元组确定)。
5.候选码: 若能够唯一标识元组的属性或极小属性组。
6. 主码/主键(Primary Key):从候选码中选定的一个候选码称为主码;
7. 全码:包含关系全部属性的码,称为全码。全码的关系必是3NF,也必是BCNF。
8. 主属性和非主属性:关系中,凡是包含在候选码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性。
9.外码/外键(Foreign Key):如果关系R中的一个属性(组),是另一个关系S的主码,则称这个属性组为R的外码。

各种键的比较:

1、书中的定义
超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键

候选键(candidate key): 不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不是键了!

主键(primary key): 用户选作元组标识的一个候选键程序主键

外键(foreign key):如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键。

2、咱们创建简单的两个表,说明一下各个键!
学生信息(学号 身份证号 性别 年龄 身高 体重 宿舍号)和 宿舍信息(宿舍号 楼号)

超键:只要含有“学号”或者“身份证号”两个属性的集合就叫超键,例如R1(学号 性别)、R2(身份证号 身高)、R3(学号 身份证号)等等都可以称为超键!

候选键:不含有多余的属性的超键,比如(学号)、(身份证号)都是候选键,又比如R1中学号这一个属性就可以唯一标识元组了,而有没有性别这一属性对是否唯一标识元组没有任何的影响!

主键:就是用户从很多候选键选出来的一个键就是主键,比如你要求学号是主键,那么身份证号就不可以是主键了!

外键:宿舍号就是学生信息表的外键

在这里插入图片描述

关系模式

关系模式是对关系的描述(有哪些属性,各个属性之间的依赖关系如何),模式的一个具体值称为模式的一个实例。模式反应是数据的结构及其联系,是型,是相对稳定的,实例反应的是关系某一时刻的状态,是值,是相对变动的。
想要查看t_student的关系模式?

DESC t_student

想要查看t_student的关系实例?

SELECT * FROM student

另外,关系模式有约定的数学表示, R ( U , D , D O M , F ) R(U,D,DOM,F) RUDDOMF,R指关系名,U指一组属性,D指域,DOM指属性到域的映射,F就是指数据依赖。举个栗子,假设一个学生表t_student,拥有属性学号,姓名,性别,学院,其数学表示如图。
在这里插入图片描述

关系模型的3类完整性规则
1.实体完整性规则(Entity integrity rule)

实体完整性要求组成关系主键的属性值不能为空值
空值:不知道或无意义
意义:元组对应现实世界中的实体,实体是相互可区分的,通过主键来唯一标识,若主键为空,则出现不可标识的实体,这是不允许的。如每个学生的学号不能为空。

2.参照完整性规则(Reference integrity rule)
   如果属性集K是关系模式R1的主键,也是关系模式R2的外键,那么在R2的关系中,K的取值只允许两种可能: 或者为空值,或者等于R1关系中某个主键值。      

这条规则的实质是“不允许引用不存在的实体”。
关系模式R1的关系称为“参照关系”,关系模式R2的关系称为“依赖关系”。
例 ① 在关系数据库中有下列两个关系模式:

S(S#,SNAME,AGE,SEX)
SC(S#,C#,SCORE)

如果关系SC中有一个元组(S7,C4,80),而学号S7却在关系S中找不到,那么我们就认为在关系SC中引用了一个不存在的学生实体,这就违反了参照完整性规则。
另外,在关系SC中**S#**不仅是外键,也是主键的一部分,因此这里S# 值不允许空。

3. 用户定义的完整性规则

用户定义的完整性是针对具体数据库应用领域的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。如SEX要求取值为“M”或“F”,年龄定为一定范围的整数。

与其它数据模型相比,关系模型突出的优点如下:
(1)关系模型提供单一的数据结构形式,具有高度的简明性和精确性。
(2)关系模型的逻辑结构和相应的操作完全独立于数据存储方式,具有高度的数据独立性。
(3)关系模型使数据库的研究建立在比较坚实的数学基础上。

2.关系代数

关系数据库系统使用**数据操纵语言(DML)**来对数据库的数据进行操纵,其中的语句分成查询语句和更新语句两大类。查询语句用于描述用户的各种检索要求,包括检索、分组、统计、排序等;更新语句用于描述用户进行插入、删除、修改等操作。
关系代数是以关系为运算对象的代数系统,其运算是一组高级运算集合。
在这里插入图片描述
这些运算根据它们之间的关系又可分为基本运算和组合运算两大类:
(1)5个基本运算
1)一元运算:选择、投影
2)多元运算:乘积(笛卡尔积)、并、集合差
(2) 4个导出运算(组合运算)
集合交、连接、自然连接、除法
(3)扩充运算
外连接、外部并、半连接、聚集运算

基本关系操作

并、差、笛卡儿积、投影和选择,它们组成了关系代数完备的运算集合。
基本运算示例图
在这里插入图片描述
条件表达式(选择等操作可能需要用到)
在这里插入图片描述

选择(Selection)运算
将R表中A<5的所有项选择出来
在这里插入图片描述
投影(Projection)运算:
将R表中的B,C投影出来:
在这里插入图片描述

选择和投影复合操作:
在这里插入图片描述

组合关系操作

交、连接、自然连接与除法,它们都可以由基本运算表示。
连接(join):
在这里插入图片描述
自然连接
在这里插入图片描述
除运算:
示例1:
在这里插入图片描述
除法示例2:
在这里插入图片描述

扩充操作

外连接(Outer Join)
如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接
在这里插入图片描述

左外连接(LEFT OUTER J0IN或LEFT J0IN)
只保留左边关系R中的悬浮元组
在这里插入图片描述

右外连接(RIGHT OUTER JOIN或RIGHT JOIN)
只保留右边关系S中的悬浮元组
在这里插入图片描述
外部并
如果求并运算的两关系模式不同,将两关系扩充-增加所缺的属性(属性值取空),然后求并,便得到外部并。
在这里插入图片描述
半连接
R和S 的半连接 定义为R和S的自然连接在R上的投影(只显示R的匹配上的部分)
在这里插入图片描述
聚集操作
聚集操作是指对某列的一组值,进行聚集运算,结果为一个单一的值。
聚集函数有 m a x 、 m i n 、 a v g 、 s u m max、min、avg、sum maxminavgsum c o u n t count count等。
在S(S#,SNAME,AGE,SEX)中,求男同学的平均年龄:
A V G a g e ( σ s e x = ‘ M ’ ( S ) ) AVG_{age}(σ_{sex=‘M’}(S)) AVGage(σsex=M(S))
求年龄为18岁的人数:
c o u n t S # ( σ a g e = ‘ 18 ’ ( S ) ) count_{S\#}(σ_{age=‘18’}(S)) countS#(σage=18(S))

3.关系演算

将数理逻辑的谓词演算引入到关系运算中,即得到以关系演算为基础的关系运算。
关系演算根据谓词公式中的变元不同,分为:
1.元组关系演算
2.域关系演算

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jay_fearless

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值