课上学习的关于数据库系统的一些基本知识
第二章-关系数据库
关系数据结构及形式化定义
关系
域
域是一组具有相同数据类型的值的集合
- 值的集合是有限的、且不重复
- 集合的概念要求集合中的元素是不重复的
- 同一数据类型
笛卡尔积
笛卡尔积:给定一组域$D_1,D_2,…,D_n$,允许其中某些域是相同的。$D_1,D_2,…,D_n$的笛卡尔积为:
$$D_1\times D_2\times …\times D_n={(d_1,d_2,…,d_n)|d_i\in D_i,i=1,2,…,n}$$
笛卡尔积是所有域的所有取值的一个组合
组合结果不允许重复
元组:笛卡尔积中的每一个元素称为一个n元组,简称元组
分量:元组中的每一个值$d_i$称为一个分量
基数:集合中包含元素的个数
笛卡尔积的表示方法:
- 可表示为一张二维表,每行对应一个元组,每列对应一个域
关系
- 定义
- $D_1,D_2,…,D_n$的子集称为在域$D_1,D_2,…,D_n$上的关系
- 表示:$R(D_1,D_2,…,D_n)$
- $R$:关系名,$n$:关系的目或度
- 元组:关系中的每个元素为关系中的元组,通常用$t$表示
- 单元关系与二元关系:$n$分别为1和2
- 表示:
- 关系是一个二维表
- 表的每行对应一个元组
- 表的每列对应一个域。
- 属性:
- 关系中不同列可在相同域上
- 必须对每列起一个名字,称为属性(attribute)。
- $n$目关系有$n$个属性
- 码/键
- 候选码:若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码(candidate key)。
- 超键:可唯一标识一个元组的属性组
- 全码:关系模式的所有属性组是这个关系模式的候选码,则称为全码
- 主键/码:若一个关系有多个候选码则选定其中一个为主码(primary key)。
- 主属性
- 候选码的诸属性称为主属性
- 不包含在任何候选码中的属性成为非主属性/非码属性
- 外键/码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码$K_S$相对应,则称F是基本关系R的外部码(foreign key),简称外码。
- 实体间的关系
- 实体之间的关系依赖主键-外键关联实现
- 三类关系
- 基本关系(基本表或基表)
- 实际存在的表,是实际存储数据的逻辑表示
- 性质
- 列是同质的:每列的分量来自同一域
- 不同列可在同一域上
- 列的顺序无关,可任意交换列的次序
- 行的顺序无关
- 任两个元组的候选码不可相同
- 分量必须取原子值
- 查询表
- 查询结果对应的表
- 视图表
- 由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
- 基本关系(基本表或基表)
关系模式
概念
- 关系模式(Relation Schema)是型(Type),是结构
- 关系是值(二维表)
- 同一关系模式下,可有很多的关系
- 关系模式是关系的结构,关系是关系模式在某一时刻的数据
- 关系模式是稳定的;而关系是某一时刻的值,是随时间可能变化的
- 关系模式是对关系的描述
关系数据库
概念
- 在给定应用领域中,所有关系的集合构成一个关系数据库
- 关系数据库的型与值
- 型:关系数据库模式(schema),是对关系数据库结构的描述
- 值:关系模式在某一时刻对应的关系的集合,通常称为关系数据库(RDB)
关系模型的存储结构
关系操作
基本的关系操作
常用关系操作
查询操作:8种(其中5种为基本操作)
选择($\sigma$)、投影($\pi$)、连接($\bowtie$)、除($\div$)、并($\cup$)、差($-$)、交($\cap$)、笛卡尔积($\times$)
其中并、差、笛卡尔积、投影和选择5种运算为基本运算。
其他运算的表示:
交:
$R\cap S=R-(R-S)$
连接:
$R \underset{A\Theta B}{\bowtie} S= \sigma_{A\Theta B}(R\times S)$
除:
$R(X,Y)\div S(Y,Z)=\pi_X(R)-\pi_X(\pi_X(R)\times\pi_Y(S)-R)$
数据更新:插入、删除、修改
数据操作的特点
- 集合操作方式:操作的对象和结果都是集合,一次一集合的方式
关系数据库语言的分类
关系代数语言
- 用对关系的运算来表达查询要求,对关系代数表达式求值
- 代表:ISBL
关系演算语言:用谓词来表达查询要求(选学)
具有关系代数和关系演算双重特点的语言
- 代表:SQL
关系的完整性
关系的三类完整性约束
- 关系的两个不变性:
- 实体完整性和参照完整性
- 是关系模型必须满足的完整性约束条件
- 用户定义的完整性
实体完整性
- 实体完整性规则:基本关系$R$的主属性不可取空值(NULL)
参照完整性
关系间的引用
外码
- 设$F$是基本关系$R$的一个或一组属性,但不是关系$R$的码,如果$F$与基本关系$S$的主码$K_S$相对应,则称$F$是基本关系$R$的外部码(foreign key),简称外码
- 基本关系$R$称为参照关系
- 基本关系$S$称为被参照关系/目标关系
- 关系$R$与$S$可以相同
- 目标关系$S$的主码$K_S$和参照关系的外码$F$必须定义在同一个/组域上
- 外码与相应主码可以不同
参照完整性规则
对于$R$中每个元组在$F$上的值必须为:
- 等于$S$中的某个元组的主码值$K_S$
- 或取空值($F$的每个属性值均为空值)
关系代数
关系代数是一种抽象的查询语言,它用关系运算表达查询
关系代数
- 运算对象是关系
- 运算结果亦为关系
- 关系代数的运算符有两类:集合运算符和专门的关系运算符
- 此外还有比较运算符和逻辑运算符
集合运算符
并($R\cup S$)
- $R$和$S$应具有相同的目$n$,相应的属性取自同一个域
- 结果仍为$n$目关系,由属于$R$或$S$的元组构成
- 结果不能重复
差($R-S$)
- $R$和$S$应具有相同的目$n$,相应的属性取自同一个域
- 结果仍为$n$目关系,由属于$R$且不属于$S$的元组构成
交($R\cap S$)
- $R$和$S$应具有相同的目$n$,相应的属性取自同一个域
- 结果仍为$n$目关系,由属于$R$又属于$S$的元组构成
笛卡尔积(广义)
- $R$: $n$目关系,$k_1$个元组
- $S$: $m$目关系,$k_2$个元组
- $R\times S$:
- 列:$(n\times m)$列元组的集合
- 行:$k_1\times k_2$个元组
专门的关系运算
记号
- $R,t\in R, t[A_i]$
- $A,t[A], \overline{A}$
- $\underset{t_rt_s}{\frown}$
- 象集$Z_X$
选择(限制/过滤)
投影
- 若投影后有重复元组,则应去掉
连接($\theta$连接)
- 从两个关系的笛卡尔积中选取属性间满足一定条件的元组
- 等值连接
- 自然连接
- 操作步骤
- 对两个表进行广义笛卡尔积
- 从广义笛卡尔积中选取在相同列上相同的元组
- 去掉重复列
- 悬浮元组
- 外连接=自然连接+失配元组
- 左外连接
- 右外连接
- 外连接=自然连接+失配元组
- 操作步骤
除
- $R(X,Y)\div S(Y,Z)=\pi_X(R)-\pi_X(\pi_X(R)\times\pi_Y(S)-R)$