数据库笔记汇总:数据库系统概论复习笔记(五)笔记汇总
教材:数据库系统概论(第五版)
出版社:高等教育出版社
第二章的思维导图(考试部分)
关系数据库
关系数据库系统:是支持关系模型的数据库系统
关系模型:由关系数据结构、关系操作集合和关系完整性约束三部分组成
关系模型的基础:集合代数
2.1 关系数据结构及形式化定义
关系模型的数据结构(单一):关系
2.1.1 关系
相关概念
域
一组具有相同数据类型的值的集合
定义了列的取值范围
笛卡尔积
是所有可能的组合
- 笛卡尔积可表示为一张二维表
- 表中的每行对应一个元组,表中的每列对应一个域
元组
笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组
分量
笛卡尔积元素(d1,d2,…,dn)中的每一个值di 叫作一个分量
关系
是笛卡尔积的一个有实际意义的有限子集
是元组的集合
D1×D2×…×Dn的有实际意义子集叫作在域D1,D2,…,Dn上的关系,常常表示为R(D1,D2,…,Dn)
- R:关系名
- n:关系的目或度
单元关系与二元关系
-
当n=1时,称该关系为单元关系或一元关系
-
当n=2时,称该关系为二元关系
候选码/候选键
关系中的某一组属性能唯一的标识一个元组,而它的子集不能
候选码可以有多个
主码
若一个关系中有多个候选码,则选定其中一个作为主码
主码只有一个,唯一标识一个元组
主属性
组成候选码的属性
非主属性/非码属性
不包含在任何侯选码中的属性
关系的三种类型
- 基本关系(基本表/基表)
- 查询表
- 视图表(是虚表,不对应实际存储的数据)
基本关系的性质
- 列是同质的。列中的分量是同类型数据,
- 不同的列可出自同一个域,其中的每一列称为一个属性,不同的属性要给予不同的属性名
- 列的顺序无所谓,,列的次序可以任意交换
- 任意两个元组的候选码不能相同
- 行的顺序无所谓,行的次序可以任意交换
- 分量必须取原子值。即每个分量都是不可分的数据项**(属性是不可分割的数据项)**
2.1.2 关系模式
是对关系的描述(有哪些属性,各个属性之间的依赖关系如何)
关系模式的表示
关系模式可以形式化地表示为:R(U,D,DOM,F)
- R:关系名
- U:组成该关系的属性名集合
- D:U中属性所来自的域
- DOM:属性向域的映象集合
- F:属性间数据的依赖关系的集合
可以简记为R (U)或R (A1,A2,…,An)
- R: 关系名
- A1,A2,…,An : 属性名
如:学生(学号,姓名,年龄,性别,系名,年级)
关系模式与关系的区别
- 关系模式是型;关系是值
- 关系模式是静态的、稳定的;关系是动态的,随时间不断变化的。
- 关系模式是对关系的描述;关系是关系模式在某一时刻的状态或内容
2.1.3 关系数据库
在一个给定的应用领域中,所有关系的集合构成一个关系数据库
关系数据库的型: 关系数据库模式,是对关系数据库的描述
关系数据库的值: 关系模式在某一时刻对应的关系的集合,通常称为关系数据库
2.1.4 关系模型的存储结构
-
有的关系数据库管理系统中一个表对应一个操作系统文件,将物理数据组织交给操作系统完成
-
有的关系数据库管理系统从操作系统那里申请若干个大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理;
2.2 关系操作
- 查询
选择、投影、连接、除、并、交、差
- 数据更新
插入、删除、修改
集合操作方式:操作的对象和结果都是集合,也称为一次一集合的方式
2.3 关系的完整性
- 实体完整性和参照完整性
是关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持
- 用户定义的完整性
应用领域需要遵循的约束条件,体现了具体领域中的语义约束
实体完整性
若属性A是基本关系R的主属性,则属性A不能取空值
(主属性不能取空值)
参照完整性
若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
- 或者取空值(F的每个属性值均为空值)
- 或者等于S中某个元组的主码值
例子
学生(学号,姓名,性别,专业号,年龄,班长)
-
“班长”是外码
-
学生关系既是参照关系也是被参照关系
“班长”属性值(外码)可以取两类值:
- 空值,表示该学生所在班级尚未选出班长
- 非空值,该值必须是本关系中某个元组的学号值
外码
设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是R的外码。(F是R中一个或一组属性,但不是R的码,是S的主码,则F是R的外码)
- 基本关系R称为参照关系
- 基本关系S称为被参照关系或目标关系
注意:
- 关系R和S不一定是不同的关系(如班长与学号的例子)
- 目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上
- 外码并不一定要与相应的主码同名(当外码与相应的主码属于不同关系时,往往取相同的名 字,以便于识别)
例子
学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)
“专业号”属性是学生关系的外码
专业关系是被参照关系,学生关系为参照关系
用户定义的完整性
关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能
2.4 关系代数
是一种抽象的查询语言,它用对关系的运算来表达查询
运算三大要素:
- 运算对象(关系)
- 运算符(集合运算符和专门的关系运算符)
- 运算结果(关系)
2.4.1 传统的集合运算
并
R∪S = { t|t∈R∨t ∈S }
仍为n目关系,由属于R或属于S的元组组成
差
R -S = { t|t∈R∧t∉S }
仍为n目关系,由属于R而不属于S的所有元组组成
交
R∩S = { t|t∈R∧t∈S }
仍为n目关系,由既属于R又属于S的元组组成
笛卡尔积
无条件的头尾连接
- R: n目关系,k1个元组
- S: m目关系,k2个元组
R×S :
- 列:(n+m)列元组的集合
元组的前n列是关系R的一个元组
元组的后m列是关系S的一个元组
- 行:k1 × k2个元组
2.4.2 专门的关系运算
引入记号
分量:t[Ai]
设关系模式为R(A1,A2,…,An)
它的一个关系设为R
t∈R表示t是R的一个元组
t[Ai]则表示元组t中相应于属性Ai的一个分量
剩余属性组
元组的连接
象集
给定一个关系R(X,Z),X和Z为属性组
当t[X]=x时,x在R中的象集(Images Set)为:
Zx={t[Z]|t∈R,t[X]=x}
它表示R中属性组X上值为x的诸元组在Z上分量的集合
本质上是一次选择行的运算和一次选择列的运算
求x1在表A中的象集
- 先选出所有x属性中x=x1的那些行
- 然后选择出不包含x1的那些列
选择
从行的角度进行的运算
在关系R中选择满足给定条件的诸元组
σF® = {t|t∈R∧F(t)= ‘真’}
F:选择条件,是一个逻辑表达式,取值为“真”或“假”
F = X1θY1
θ表示比较运算符,它可以是>,≥,<,≤,=或<>
例:查询信息系(IS系)全体学生
σ Sdept = ‘IS’ (Student)
投影
主要是从列的角度进行运算
从R中选择出若干属性列组成新的关系
πA® = { t[A] | t∈R }
A:R中的属性列
例:查询学生的姓名和所在系
πSname,Sdept(Student)
连接
从行的角度进行运算
也称θ连接
从两个关系的笛卡尔积中选取属性间满足一定条件的元组
等值连接
θ为“=”时的θ连接
自然连接
自然连接还需要取消重复列,所以是同时从行和列的角度进行运算
是特殊的等值联结
- 两个关系中进行比较的分量必须是相同的属性组
- 在结果中把重复的属性列去掉
悬浮元组
两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组
外连接
如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接
- 左外连接只保留左边关系R中的悬浮元组
- 右外连接只保留右边关系S中的悬浮元组
除运算
同时从行和列角度进行运算
对于表A和表B,求A÷B
- 找出表B中与A属性相同的那些列
- 求表A中各个不同x对应的象集
- 找表A中的x,这个x要满足:表B是x的象集的子集