关系数据库
关系数据库
关系数据库应用数学方法来处理数据库中的数据,它是支持关系模型的数据库系统
“A Relational Model of Data for Shared Data Banks”论文1983年把它列为1958年以来的四分之一世纪中具有里程碑意义的25篇论文之一
关系数据结构以及形式定义
关系模型的三个组成部分
关系数据结构
关系操作集合
关系完整性集合关系
关系模型的数据结构非常简单,只包含单一的数据结构——关系,在用户看来关系数据模型中数据的逻辑结构是一张二维表
关系模型是建立在集合代数基础上的,
关系必须是有限集合
添加属性名来取消关系属性的有序性
每一个列是同一类型的数据来自同一域
不同列可以来自同一个域,不同属性要给予不同属性名
列的顺序无所谓,次序可以任意
行的顺序无所谓,次序可以任意
元组中候选码不能相同
分量必须是原子的,不能够再分基本类型
通常又被为基本表或基表,是实际存在的表,它是实际存储数据的逻辑表示
查询表
查询结果对应的表
视图表
由基本表或其它视图表导出的表,是虚表,不对应实际存储的数据
候选码
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key)
主码
若一个关系有多个候选码,则选定其中一个为主码
主属性
候选码的属性称为主属性
非主属性
不包含在候选码中的属性称为非主属性或非码属性
全码
所有属性都是这个关系模式的候选码
域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
关系类型
关系限定和扩展
由于关系可以是一个无限集合
关系模式
关系模式型,关系是值,关系模式是对关系的描述
关系是元组的集合因此关系模型必须指出这个元组集合的结构、属性、属性的域、属性与域之间的映像关系
可以表示为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
笛卡尔积
插入、修改、删除操作
关系数据语言分类
元组关系演算语言ALPHA、QUEL
域关系演算语言QBE
关系代数语言ISBL
关系演算语言
具有关系代数和关系演算特点的SQL
SQL是结构化查询语言,是集查询、数据定义语言DDL、数据操纵语言DML、数据控制语言DCL一体的关系数据语言
关系完整性
实体完整性
若属性(指一个或一组属性)A是基本关系R的主属性,那么A不能取空值,所谓空值就是不存在或无意义的值
实体完整性规则:
实体完整性规则是针对基本关系而言的
现实世界中实体是可区分的
主码可作为唯一性标识
主码中的属性即主属性不能取空值参照完整性
若属性或属性组F是基本关系R的外码,它与基本关系S的主码K,相对应,基本关系R和S不一定是不同的关系。
参照完整性规则:
可以为空值
是S中的某个元组的主码用户定义的完整性
某一个应用涉及数据必须满足的语义要求,比如学生不能没有姓名这就是用户定义的完整性
关系代数
关系代数是一种抽象的查询语言,它用对关系的运算来表达查询
关系代数三大要素
运算对象
运算符
运算结果
运算符类型
括号最高
单目运算符级别最高 选择、投影、除
笛卡尔积和连接
交
并和差
选择 ☌
选择又称为限制,它是在关系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属性值满足比较关系的元组
除 ÷
设关系R除以关系S结果为T,那么T中包含在R但不在S中的属性和值,且T的元组与S的元组所有组成是R
计算过程:
先求投影、找出象集相等的元组悬浮元组
两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组
左外连接
左外连接只保留左边关系R中的悬浮元组
右外连接
右外连接只保留右边关系S中的悬浮元组
等值连接
θ为“=”时的θ连接
自连接
是特殊的等值联结,要求
两个关系中比较的分量必须是同名的属性组,如果属性有多个那么多个属性列都得相等
在结果中把重复的属性列去掉外连接
如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接
并 ∪
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 = { tr ts | tr∈R Λ ts∈S }
集合运算符
将关系看成元组
前提条件:
设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性来自同一个域,t是元组变量,t∈R表示t为R的一个元组专门的关系运算符
将关系看成元组或者元组中的一列属性
前题条件:
关系模式为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上分量集合运算符优先级
重命名
☌S(A1,A2...An)(R)
将关系R重命名为S
将关系各属性命名为A1、A2..An
关系演算