目录
关系数据结构及形式化定义
关系
单一的数据结构——关系
现实世界的实体以及实体间的各种关系均用关系来表示
逻辑结构——二维表
从用户角度,关系模型中数据的逻辑结构是一张二维表
建立在集合代数的基础上
- 域
- 笛卡尔积
- 关系
域
域是一组具有相同数据类型的值的集合
- 整数
- 实数
- 介于某个取值范围的整数
- 指定长度的字符串集合
笛卡尔积
给定一组域D1,D2,···,Dn,允许其中某些域是相同的。
D1,D2,···,Dn的笛卡尔积为:
D1 * D2 * ··· * Dn = { (d1,d2,···,dn)| di ∈ Di,i= 1,2,···,n}
- 所有域的所有取值的一个组合
- 不能重复
元组
- 笛卡尔积中每一个元素(d1,d2,···,dn)叫做一个n元组,简称元组
- MySQL表中的一行即为元组,例如(张青梅,计算机专业,女,202312151)
分量
- 笛卡尔积元素(d1,d2,···,dn)中的每一个值di叫做一个分量
- MySQL表中每一个格子里面的元素就是分量
基数
若Di(i = 1,2,···,n)为有限集,其基数为mi(i = 1,2,···,n),则D1 * D2 * ··· * Dn的基数M为:,乘积——m1 * m2 * ··· *mn
笛卡尔积的表示方法
- 笛卡尔积可表示为一张二维表
- 表中的每行对应一个元组,表中的每列对应一个域
- 域即属性
- M的值等于域中元素数量的乘积
关系
关系
D1 * D2 * ··· * Dn的子集叫做在域D1,D2,···,Dn上的关系,表示为R(D1,D2,···,Dn)
R——关系名
n——关系的目或度
元组
关系中的每个元素是关系中的元组,通常用t表示
单元关系与二元关系
当n=1时,称该关系为单元关系或一元关系
当n=2时,称该关系为二元关系
关系的表示
关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域
属性
- 关系中不同列可以对应相同的域
- 为了加以区分,必须对每列起一个名字,称为属性
- n目关系必有n个属性
码
候选码——若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码,最简单的情况:候选码只包含一个属性
全码——最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码
主码——若一个关系有多个候选码,则选定其中一个为主码
主属性——候选码的诸属性称为主属性,不包含在任何候选码中的属性称为非主属性或非码属性
在MySQL中建立表的时候可以设定某个域为主码,加入设定Sno为主码,那么Sno在后续输入分量的时候就不能有相同的分量。
三类关系
基本关系(基本表/基表)——实际存在的表,是实际存储数据的逻辑表示
查询表——查询结果对应的表
视图表——由基本表或其他视图导出的表,是续表,只能看,不能改,不对应实际存储的数据
基本关系的性质
- 列是同质的
- 不同的列可以出自同一个域——其中的每一列成为一个属性,不同的属性要给予不同的属性名
- 列的顺序无所谓,列的次序可以任意交换
- 任意两个元组的候选码不能相同
- 行的顺序无所谓,行的次序可以任意交换
- 分量必须去原子值,不可嵌套,不可表中有表,因为后续运算是代数运算,这是规范条件中最基本的一条
关系模式
什么是关系模式
关系模式是型
关系是值
关系模式是对关系的描述
- 元组集合的构成——属性构成,属性来自域,属性与域之间的映像关系
- 完整性约束条件——属性间数据依赖关系
定义关系模式
关系模式可以形式化的表示为:
R(U,D,DOM,F)
R 关系名
U 组成该关系的属性名集合
D U中属性所来自的域
DOM 属性向域的映像集合
F 属性间数据的依赖关系集合
关系模式通常可以简记为
R(U) 或 R(A1,A2,···,An)
R 关系名
A1,A2,···,An 属性名
域名及属性名向域的映像常常直接说明为属性的类型、长度
关系模式与关系
关系模式
- 对关系的描述
- 静态的,稳定的
关系
- 关系模式在某一时刻的状态或内容
- 动态的,随时间不断变化的
关系模式和关系往往笼统成为关系,通过上下文加以区别
关系数据库
关系数据库
- 在一个给定的应用领域中,所有关系的集合构成一个关系数据库
关系数据库的型与值
- 关系数据库的型:关系数据库模式,是对关系数据库的描述
- 关系数据库的值:关系模式在某一时刻对应的关系的集合,通常成为关系数据库
关系模型的存储结构
关系数据库的物理组织
- 有的关系数据库系统中一个表对应一个操作系统文件,将物理数据组织交给操作系统完成
- 有的关系数据库管理系统从操作系统那里申请若干个大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理
关系操作
常用的关系操作
- 查询操作——选择、投影、连接、除、并、差、交、笛卡尔积
- 数据更新——插入,删除,修改
选择,投影,并,差,笛卡尔积是5种基本操作
关系操作的特点
- 集合操作方式——操作的对象和结果都是集合,一次一集合的方式
关系代数语言
- 用对关系的运算来表达查询要求
- 代表ISBL
关系演算语言——用谓语来表达查询要求
- 元组关系演算语言——谓词变元的基本对象是元祖变量
- 域关系演算语言——谓词变元的基本对象是域变量
具有关系代数和关系演算双重特点的语言
关系的完整性
实体完整性和参照完整性
- 关系模型必须满足的完整性约束条件成为关系的两个不变性,应该由关系系统自动支持
用户定义的完整性
- 应用领域需要遵循的约束条件,体现了具体领域中的语义约束
任何时刻任何关系都要满足这些约束条件
实体完整性
定义:若属性A是基本关系R的主属性,则属性A不能取空值
空值就是不知道或不存在或无意义的值
在建立表student的时候,设定属性Sno是主码,因此Sno不能是空值,如果是空值
实体完整性规则的说明
- 实体完整性规则是针对基本关系而言的,一个基本表通常对应现实世界是一个实体集
- 现实世界中的实体是可区分的,即他们具有某种唯一性标识
- 关系模型中以主码作为唯一性标识
- 主码中的属性即主属性不能取空值。
参照完整性
关系间的引用
在关系模型中实体及实体间的联系都是用关系来描述的,自然存在着关系与关系间的引用
表sc中引用了表student的主码Sno和表course中的主码Cno。
表sc中的Sno和Cno值必须是在表student和表course中确实存在的
外码
设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应(F和Ks语义上是相同的,例如表sc中的Sno和表student中的Sno),则称F是R的外码。
基本关系R成为参照关系
基本关系S成为被参照关系或目标关系
在表course中,Cpno是外码,是表course的外码,Cpno与基本关系course的主码Cno相对应,他们在语义上是相同的,都是课程编号
在表sc中,Sno和Cno都是外码,Sno参照表student中的Sno,Cno参照表course中的Cno
因为所在表不一样,所以取一样的名字方便我们和被参照表对应,也可以清晰的表明外码和被参照列是相同或相近的语义
关系R和关系S可以是同一张表,例如在表course中,Cpno其中的一个属性,但是他同样参照了他的主码Cno
目标关系S的主码Ks和参照关系的外码必须定义在同一个域上,例如表sc中的Sno的域就不能大于表student中的Sno的域
外码不一定要与相应的主码同名,例如Cpno和Cno
参照完整性规则
若属性F是基本关系R的外码,他与基本关系S的主码Ks相对应,则对于R中每个元组在F上的值必须为
- 每个属性值均为空值
- 等于S中某个元组的主码值
用户定义的完整性
针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
关系模型应提供定义和检验这类完整性的机制,以便用同意的系统的方法处理他们,而不需由应用程序承担这一功能
关系代数
关系代数是一种抽象的查询语言,他用对关系的运算来表达查询
关系代数
- 运算对象是关系
- 运算结果亦为关系
- 关系代数的运算符有两类——集合运算符和专门的关系运算符
传统的集合运算是从关系的水平方向即行的角度进行
专门的关系运算不仅涉及行而且涉及列
传统的集合运算
只能模式相同时应用
并
R和S
- 具有相同的目n(即两个关系都有n个属性)
- 相应的属性取自同一个域
- 对参与运算的有形的要求
R∪S
仍为n目关系,由属于R或属于S的元组组成
差
R和S
- 具有相同的目n(即两个关系都有n个属性)
- 相应的属性取自同一个域
- 同样的模式
R-S
仍为n目关系,由属于R而不属于S的所有元祖组成
交
R和S
- 具有相同的目n(即两个关系都有n个属性)
- 相应的属性取自同一个域
R∩S
仍为n目关系,由既属于R又属于S的元组组成
笛卡尔积
严格地讲应该是广义的笛卡尔积
R——n目关系,k1个元组
S——m目关系,k2个元组
R×S
列:m+n列元组的集合
- 元组的前n列是关系R的一个元组
- 后m列是关系S的一个元组
行:k1×k2个元组
- 串接——首尾相连
专门的关系运算
空值的表示:加一个标志位
设关系模式为R()
他的一个关系设为R
表示t是R的一个元组
表示元组t中相应于属性Ai的一个分量(值)
若,其中
是
中的一部分,则A称为属性列或属性组
表示元组t在属性列A上诸分量的集合
则表示
中去掉
后剩余的属性组
R为n目关系,S为m目关系
成为元组的连接
是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量是S中的一个m元组
象集
给定一个关系R(X,Z),X和Z为属性组。
当时,x在R中的象集为
他表示R中属性组X上值为x的褚元组在Z上分量的集合
Z一定是R的属性子集+
在R中的象集
在R中的象集
在R中的象集
选择(限制)
选择运算符的含义:
在关系R中选择满足给定条件的褚元组
F:选择条件,是一个逻辑表达式,取值为‘真’或‘假’
- 基本形式为
表示比较运算符,他可以是>,≥,<,≤,=或<>(不等于,等同于!=)
选择运算你是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行运算的
具体语句可以写为,转换为MySQL语句并进行运行,选择结果如下:
投影
从R中选择出若干属性列组成新的关系,A为R中的属性列
投影操作主要是从列的角度进行运算
投影后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)
具体语句可以写为,转换为MySQL语句并进行运行,选择结果如下:
连接(
连接)
连接运算的含义:
从两个关系的笛卡尔积中选取属性间满足一定条件的元组
A和B:分别为R和S上度数相等且可比的属性组
:比较运算符
连接运算从R和S的广义笛卡尔积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系的元组
两类常用连接运算:
等值连接:
为=的连接运算成为等值连接
- 从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:
自然连接——一种特殊的等值连接
- 两个关系中进行比较的分量必须是相同的属性组
- 在结果中把重复的属性列去掉
自然连接的含义
R和S具有相同的属性组B
,U——全部属性
一般的连接操作时从行的角度进行运算
自然连接还需要取消重复列,所以是从行和列的角度进行运算
悬浮元组
两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组成为悬浮元组
外连接
- 如果把悬浮元组也保存在结果关系中,而在其他属性上填空值,就叫外连接
- 如果值保留左边关系R中的悬浮元组,则称为左外连接
- 同理可得右外连接
除运算
给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。
R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集,这一点概念和前面的外码一样。
R与S的除运算得到一个新的关系P(X)
P是R中满足下列条件的元组在X属性列上的投影:
元组在X上分量值x的象集包含S在Y上投影的集合,记作
:x在R中的象集,x=
除操作时同时从行和列的角度进行运算的
在R中只有a1对应的BC可以完全包含S中的BC,所以R÷S=a1
在关系R中,A可以取四个值{a1,a2,a3,a4}
a1的象集为{(b1,c2),(b2,c3),(b2,c1)}
a2的象集为{(b3,c7),(b2,c3)}
a3的象集为{(b4,c6)}
a4的象集为{(b6,c6)}
S在(B,C)上的投影为{(b1,c2),(b2,c1),(b2,c3)}
只有a1的象集包含了S在(B,C)属性组上的投影,所以R÷S={a1}