关系数据库
关系数据库应用数学方法来处理数据库中的数据,它是支持关系模型的数据库系统
“A Relational Model of Data for Shared Data Banks”论文1983年把它列为1958年以来的四分之一世纪中具有里程碑意义的25篇论文之一
关系数据结构以及形式定义
-
关系模型的三个组成部分
关系数据结构
关系操作集合
关系完整性集合 -
关系
关系模型的数据结构非常简单,只包含单一的数据结构——关系,在用户看来关系数据模型中数据的逻辑结构是一张二维表
关系模型是建立在集合代数基础上的,
-
域domain
域是指一组具有相同数据类型数据的集合,比如整数、男女、小于25个字节的字符串
由于域的值可以相同因此在域上添加一个名字,称为属性
-
笛卡尔积
笛卡尔积是域上的一种集合运算,所有域上的所有取值的集合就是笛卡尔积
定义:给定一组域D1、D2...Dn,允许其中域相同,那么笛卡尔积就是:D1D2D3 = {(d1,d2...dn)} | di属于Di , i=1,2...n}
每一个元素(d1,d2...dn)叫做一个n元组或者是元组
元素中每一个值di叫做分量
一个域允许不同取值个数称为这个域的基数例如,给出3个域:
D1=导师集合SUPERVISOR={张清玫,刘逸}
D2=专业集合SPECIALITY={计算机专业,信息专业}
D3=研究生集合POSTGRADUATE={李勇,刘晨,王敏}
那么笛卡尔积的基数为223=12 -
关系
D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn)
R为关系名称
n为关系的目或度关系也是一个二维表,每行对应一个元组,每列对应一个域,每列称为属性
有意义的子集的关系被取名为SAP
-
候选码
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key)
-
主码
若一个关系有多个候选码,则选定其中一个为主码
-
主属性
候选码的属性称为主属性
-
非主属性
不包含在候选码中的属性称为非主属性或非码属性
-
全码
所有属性都是这个关系模式的候选码
-
-
关系类型
-
基本类型
通常又被为基本表或基表,是实际存在的表,它是实际存储数据的逻辑表示
-
查询表
查询结果对应的表
-
视图表
由基本表或其它视图表导出的表,是虚表,不对应实际存储的数据
-
-
关系限定和扩展
由于关系可以是一个无限集合
-
关系必须是有限集合
-
添加属性名来取消关系属性的有序性
每一个列是同一类型的数据来自同一域
不同列可以来自同一个域,不同属性要给予不同属性名
列的顺序无所谓,次序可以任意
行的顺序无所谓,次序可以任意
元组中候选码不能相同
分量必须是原子的,不能够再分
-
-
-
关系模式
关系模式型,关系是值,关系模式是对关系的描述
关系是元组的集合因此关系模型必须指出这个元组集合的结构、属性、属性的域、属性与域之间的映像关系
可以表示为R(U,D,DOM,F)
R为关系,U为关系的属性名集合,DOM为属性向域的映像集合,F为属性间数据依赖关系集合关系通常可以简化为R(U)或者R(A1,A2...An)
A1,A2...An为属性名关系模式是关系模型在某一个时刻的状态或内容,关系模式是静态的、稳定的而关系是动态的
-
关系数据库
关系数据库的型称为关系数据库模式,是对关系数据库的描述
关系数据库的值是对这些关系模式在某一时刻对应的关系集合,通常称为关系数据库
-
关系数据库的存储结构
-
逻辑模型
表示关系数据的逻辑迷行
-
物理模型
一个表对应一个操作系统文件,也可以是若干个大的文件自己划分文件空间、组织表、索引等存储结构
-
关系操作
操作的对象和结果都是集合,这种操作方式也称为一次一集合,非关系数据库模型的数据操作称为一次一记录
-
查询操作
- 选择select
- 投影project
- 连接join
- 除divide
- 并union
- 差except
- 交intersection
- 笛卡尔积
-
插入、修改、删除操作
-
关系数据语言分类
-
关系代数语言ISBL
-
关系演算语言
- 元组关系演算语言ALPHA、QUEL
- 域关系演算语言QBE
-
具有关系代数和关系演算特点的SQL
SQL是结构化查询语言,是集查询、数据定义语言DDL、数据操纵语言DML、数据控制语言DCL一体的关系数据语言
-
关系完整性
-
实体完整性
若属性(指一个或一组属性)A是基本关系R的主属性,那么A不能取空值,所谓空值就是不存在或无意义的值
实体完整性规则:
实体完整性规则是针对基本关系而言的
现实世界中实体是可区分的
主码可作为唯一性标识
主码中的属性即主属性不能取空值 -
参照完整性
若属性或属性组F是基本关系R的外码,它与基本关系S的主码K,相对应,基本关系R和S不一定是不同的关系。
参照完整性规则:
可以为空值
是S中的某个元组的主码 -
用户定义的完整性
某一个应用涉及数据必须满足的语义要求,比如学生不能没有姓名这就是用户定义的完整性
关系代数
关系代数是一种抽象的查询语言,它用对关系的运算来表达查询
-
关系代数三大要素
- 运算对象
- 运算符
- 运算结果
-
运算符类型
-
集合运算符
将关系看成元组
前提条件:
设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性来自同一个域,t是元组变量,t∈R表示t为R的一个元组-
并 ∪
R ∪ S = { t | t∈R ν t∈S }
由属于R和S中的元组组成 -
差 -
R-S = { t | t∈R Λ t∉S }
属于R中但是不属于S中的元组
-
交 ∩
R ∩ S = { t | t∈R Λ t∈s }
属于R又属于S中的元组组成也可以使用差集表示
R∩S = R-(R-S) -
笛卡尔积 x
R * S =
-
-
专门的关系运算符
将关系看成元组或者元组中的一列属性
前题条件:
关系模式为R(A1,A2...An),它的关系设为R。t∈R表示t是R的一个元组。t[Ai]表示元组t中相应于属性Ai的分量
若A={Ai1,Ai2...Aik},其中Ai1,Ai2...Aik是A1,A2...Ak中一部分,A称为属性列或属性组。t[A] = (t[Ai1],t[Ai2]...t[Aik])表示元组t在属性列A上的分量集合,(上横线 + A)表示 {A1,A2...An}中去掉{Ai1,Ai2...Aik}后剩余的属性组
R为n目关系,S为m目关系,tr∈R,ts∈S,(上横线 + tr ts)称为元组的连接或元组的串接
给定一个关系R(X,Z),X和Z为属性组当t[X] = x时,x在R中的象集定义为Zx = { t[Z] | t∈R, t[X] = x },表示R中属性组X上为x的元组在Z上分量集合-
选择 ☌
选择又称为限制,它是在关系R中满足条件的元组,记作
☌F(R)={ t | t∈R Λ F(t) = '真‘ }
例子:
☌Sdept='IS'(Student)表示在Student中sdept属性等于IS的元组
☌Sage<20(Student)表示Student中sage小于20的元组F表示条件,它是一个逻辑表达式,逻辑取值为真或者假,
X1θY1,θ是比较运算符可以是>、<、= 、<=、>=、<>、逻辑非¬、逻辑与∧、逻辑或∨
X1和Y1是属性名、常量或者简单函数
-
投影 Π
从关系R上选择若干属性组成新的关系,记作
ΠA(R) = { t[A] | t∈R }
A为R中的属性列例子:
ΠSname,sdept(Student)表示选择Stduent中sname的属性列和sdept的属性列,并且去掉这些属性列中重复的元组 -
连接 ∞
也称θ连接,从两个关系的笛卡尔积中选取属性间满足条件的元组。
R∞S={trts | tr∈R Λ ts ∈S Λ tr[A]θts[B]},它的时候是从R中的A属性组上值与S中B属性值满足比较关系的元组
-
等值连接
θ为“=”时的θ连接
-
自连接
是特殊的等值联结,要求
两个关系中比较的分量必须是同名的属性组,如果属性有多个那么多个属性列都得相等
在结果中把重复的属性列去掉 -
外连接
如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接
-
悬浮元组
两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组
-
左外连接
左外连接只保留左边关系R中的悬浮元组
-
右外连接
右外连接只保留右边关系S中的悬浮元组
-
-
-
除 ÷
设关系R除以关系S结果为T,那么T中包含在R但不在S中的属性和值,且T的元组与S的元组所有组成是R
计算过程:
先求投影、找出象集相等的元组
-
-
运算符优先级
- 括号最高
- 单目运算符级别最高 选择、投影、除
- 笛卡尔积和连接
- 交
- 并和差
-
-
重命名
☌S(A1,A2...An)(R)
将关系R重命名为S
将关系各属性命名为A1、A2..An
关系演算

浙公网安备 33010602011771号