一、关系模型
1.1.基本概念
- 在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成
- 用表格结构表达实体集,用外键(外码)表示实体间联系
1.2.优缺点
-
优点:
- 建立在严格的数学概念基础上
- 概念单一,结构简单、清晰,用户易懂易用
- 存取路径对用户透明,从而数据独立性、安全性好,简化数据库开发工作
-
缺点:由于存取路径透明,查询效率往往不如非关系数据模型
二、基本概念
2.1.域
- 是一组具有相同数据类型的值的集合
- 整数
- 实数
- {'男', '女'}
2.2.笛卡尔积
-
给定一组域D1, D2, ..., Dn,这些域中可以有相同的。D1, D2, ..., Dn的笛卡尔积为:D1 x D2 x ... x Dn = {(d1, d2, ..., dn) | di ∈ Di, i = 1, 2, ..., n}
-
所有域的所有取值的一个组合
-
不能重复
2.3.关系
-
D1 xD2 x ... x Dn的子集叫做在域D1, D2, ..., Dn上的关系,表示为R(D1, D2, ..., Dn)
-
R: 关系名
-
n: 关系的目或度(Degree)
2.4.关系的表示
- 关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域
2.5.属性
- 关系中不同列可以对应相同的域
- 为了加以区分,必须对每列起一个名字,称为属性(Attribute)
- n目关系必有n个属性
2.6.候选码(Candidate key)
- 若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码
2.7.主码(Primary key)
- 若一个关系有多个候选码,则选定其中一个为主码
2.8.基本关系具有以下6条性质:
-
列是同质的,即每一列中的分量是同一类型的数据,来自同一个域
-
不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名
-
列的顺序无所谓,即列的次序可以任意交换
-
任意两个元组不能完全相同。
- 但多数实际关系数据库产品中,例如Oracle等,如果用户没有定义有关的约束条件,它们都允许关系表中存在两个完全相同的元组
-
行的顺序无所谓,即行的次序可以任意交换
-
分量必须取原子值,即每一个分量都必须是不可分的数据项
2.9.关系的描述
-
称为关系模式,关系模式是一个五元组,形式化地表示为:R(U, D, DOM,F)
- R:关系名
- U:组成该关系地属性名集合
- D:属性组U中属性所来自的域
- DOM:属性向域的映像集合
- F:属性间的数据依赖关系集合
-
通常简记为R(A1, A2, ... , An),R为关系名,A1,A2...为属性名
三、规范化理论
3.1.基本概念
-
设有一个关系模式R(SNAME, CNAME, TNAME, TADDRESS),其属性分别表示学生姓名,课程名,任课教师姓名和任课教师地址。这个模式存在下列存储异常的问题
- 数据冗余
- 修改异常
- 插入异常
- 删除异常
-
把R分解成下列三个关系模式:R1(SNAME, CNAME)和R2(CNAME, TNAME),R3(TNAME, TADDRESS),则能消除上述的存储异常现象
-
模式设计强调“每个联系单独表达”是一条重要的设计原则
四、范式
4.1.第一范式(1NF)
- 如果关系模式R的每个关系r的属性值都是不可分的原子值,那么R是第一范式的模式,r是规范化的关系
- 说明:在任何一个关系数据库中,第一范式是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库
4.2.第二范式(2NF)
- 若关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么称R是2NF模式
- 简单的说,是表中的属性必须完全依赖于全部主键,而不是部分主键。所以只有一个主键的表如果符合第一范式,那一定是第二范式
4.3.第三范式(3NF)
- 如果关系模式R是1NF,且每个非主属性都不传递依赖于R的候选码,则称R是3NF
- 例如,存在一个部门信息表,其中每个部门有部门编号(dept_id),部门名称,部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称,部门简介等与部门相关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则会有大量的数据冗余
4.4.BC范式(BCNF)
- 若关系模式R是1NF,且每个属性都不传递依赖于R的候选键,那么称R是BCNF模式
- 相对于第三范式,BC范式的要求更加严格。第三范式只是要求R为第二范式且非主属性不传递依赖于R的候选键,而BC范式则是对R的每个属性都做要求
五、常用的关系操作
5.1.操作分类
- 查询:选择、投影、连接、除、并、交、差
- 数据更新:插入、删除、修改
5.2.查询的表达能力
- 传统的集合运算时二目运算,包括并、交、差、广义笛卡尔积
- 专门的关系运算包括:选择、投影、连接、除四种运算
5.3.并
- 具有相同的目n(两个关系都有n个属性),R和S的并是由属于R或属于S的元组组成的集合,记为R∪S,形式定义如下:
- R∪S = {t|t∈R∨t∈S}
5.4.差
- 关系R和S具有相同的目n,R和S的差是由属于R且不属于S的元组组成的集合,记为R-S。形式定义如下:
- R-S = {t|t∈R∧t!∈S}
5.5.交
- 关系R和S具有相同的目n,R和S的交是由既属于R又属于S的元组组成的集合,记为R∩S。形式定义如下:
- R∩S = {t|t∈R∧t∈S}
5.6.笛卡尔积
-
R:n目关系,k1个元组
-
S:m目关系,k2个元组
-
R x S
-
列:(n+m)列元组的集合
- 元组的前n列是关系R的一个元组
- 后m列是关系S的一个元组
-
行:k1 x k2行元组
- R x S = {tr ts | tr ∈ R ∧ ts ∈ S}
-
六、关系运算
6.1.投影
-
投影操作从关系R中选择出若干属性列组成新的关系,该操作对关系进行垂直分割,消去某些列,并重新安排列的顺序,再删去重复元组。记作:
- πA(R) = {t[A] | t ∈ R}
- 其中A为R的属性列
-
投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)
6.2.选择
- 选择操作在关系R中选择满足给定条件的所有元组,记作:
- σF(R) = {t|t ∈ R∧F(t)='真'}
- 其中F表示选择条件,是一个逻辑表达式(逻辑运算符+算术表达式)。选择运算是从行的角度进行的运算
6.3.θ连接
- θ连接从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
- 一般连接
- 等值连接
- 自然连接:特殊的等值连接
- 两个关系中进行比较的分量必须是相同的属性组
- 在结果中把重复的属性列去掉
6.4.外连接(OUTER JOIN)
- 关系R、S进行自然连接时,如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(NULL),这种连接叫做外连接
6.5.左外连接
- 关系R、S进行自然连接时,如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFT OUTER JOIN或LEFT JOIN)
6.6.右外连接
- 关系R、S进行自然连接时,如果只把左边关系S中要舍弃的元组保留就叫做右外连接(RIGHT OUTER JOIN或RIGHT JOIN)
6.7.除法
- 给定关系R(X, Y)和S(y, Z),其中X, Y, Z为属性组
- R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集
- R与S的除运算得到一个新的关系P(X)