3、关系模式
常用术语
- 关系:一个关系就是一张二维表,每个关系有一个关系名
- 元组:表中的一行是一个元组,对应存储文件中的一个记录值
- 属性:表中的列称为属性,每一列有一个属性名,属性值相当于记录中的数据项或字段值
- 域:属性的取值范围,即不同元组对同一个属性的值限定的范围,例如逻辑型属性只认真(T)假(F)
- 关系模式:对关系的描述称为关系模式,由关系名和其属性集合构成
关系模式的格式为:关系名(属性 1,属性 2,属性 3,...)
五个码
- 候选码:属性或属性组合,其值能够唯一地标识一个元组
- 主码(主键):在一个关系中可能有多个候选码,从中选择一个作为主码
- 主属性:包含在任何候选码的属性称为主属性,不包含的称为非主属性
- 外码(外键):一个关系中的属性或属性组并非改关系的码,但是是另外一个关系的码,称为该关系的外码
- 全码:关系模式中的所有属性组是这个关系模式的候选码,称为全码
- 超码:一个包含码的属性集称为超码,例如学号是码,则(学号、姓名)是超码
定义
- 关系的描述称为关系模式,可以表示为 R(U - 属性集合、D - 属性 D 中来自的域、dom、F)
- 通常简记为 R(a1,a2,...,aN)
- 关系模型中数据的逻辑关系是一张二维表
完整性约束
- 实体完整性:关系中主码不能为空
- 参照完整性:外键(可以为空)必须在对应的关系中找到(不能为空值)
关系代数运算符
集合运算符
并(U)- 不考
关系 R 和关系 S 的所有元组合并,再删除重复的元组,组成一个新关系,称为 R 和 S
交(n)- 不考
关系 R 和关系 S 的交,是即属于 R 又属于 S 的元组组成的集合
差(-)- 不考
R 和 S 的差,是属于 R 但不属于 S 的元组组成的集合
笛卡尔积(x)
例如 D1= {0,1}, D2 = {a,b,c} 则 D1 x D2 =
专门的关系运算符
选择(σ)
- 从关系的水平方向进行运算,从关系 R 中选出满足条件的元组
- 记为 σF(R)
- F 中的运算对象是属性名或常数,运算符、算术比较符和逻辑运算符
- 要比较数值,要加单引号,不加单引号就是列的序号
投影(π)
从关系的垂直方向进行运算,从关系 R 中选出若干属性列 A 组成新的关系 说人话:选几列组成新的关系
连接(⨝)
连接运算是从笛卡尔积中选择符合条件的元组
θ 连接
从 R 与 S 的笛卡尔积中选择符合条件的元组,θ 为符号(算术比较、逻辑运算)
可以换算为 σxθy(RxS)
等值连接
当 θ 为“=”时,称为等值连接
自然连接
- 是去除重复属性的等值连接(笛卡尔积后 θ 为“=”)
- 关系 R 和 S,有一个或多个同名属性
- 自然连接为空,退化成笛卡尔积
- 计算过程为:
- 计算 R x S
- 设 R 和 S 的公共属性为 A1....AK,挑选 RxS 中符合 R.A1 = S.A1...R.Ak = S.Ak 的元组(所有的公共属性列都要相等)
- 去掉 SA1...SAk 这些列(保留 R.A1...R.Ak 列)
外连接
是连接运算的拓展,可以处理由于连接运算而缺失的信息
左外连接(连接符号左边加两条杠)
讲人话就是将自然连接删除的数据加入到关系中,但是右表中的属性设为空值
右外连接(连接符号右边加两条杠)
讲人话就是将自然连接删除的数据加入到关系中,但是左表中的属性设为空值
全外连接(连接符号左右边各加两条杠)
自然连接 + 左外连接 + 右外连接
除(➗) - 不考
关系代数转 SQL 语言
投影转 SQL
- 转换为
select from
选择转 SQL
- 转换为
select from where
笛卡尔积转 SQL
- 转换为
select 所有列 from R,S where
自然连接转 SQL
- 转换为
select 所有列 from R,S where R.列名 = S.列名 and R.列名 = S.列名
五元组
一个关系模式应该是一个五元组
R<U,D,dom,F>
- R: 关系名
- U:一组属性
- D:属性 U 的取值范围
- dom:属性到域的映射
- F:属性组 U 上的一组数据依赖(函数依赖)
函数依赖
- X 函数决定 Y,Y 函数依赖于 X,记作 X->Y
- 比如 学号 -> 姓名(学号决定姓名)
- 非平凡的函数依赖(大部分情况),如果 X->Y,但 Y 不包含于 X,则称 X->Y 为非平凡的函数依赖
- 平凡的函数依赖:如果 X->Y,且 Y 包含于 X,则称 X->Y 为平凡的函数依赖
- 完全函数依赖:如果 X->Y,且 X 中任意一个真子集都不能决定 Y,则称为完全函数依赖,记作 X-(F)->Y
- 部分函数依赖:如果 X->Y,且 X 中任意一个真子集可以决定 Y,则称为部分函数依赖,记作 X-(P)->Y
- 传递依赖:如果 X->Y,Y 不包含 X,Y->Z,则称 Z 对 X 传递依赖
公理系统
- A1 自反律:若 Y 属于 X 属于 U,则 X->Y 为 F 所蕴含
- A2 增广率:若 X->Y,Y->Z,且 Z 包含于 U,则 XZ -> YZ 为 F 所蕴含
- A3 传递律:若 X->Y,Y->Z,则 X->Z 为 F 所蕴含
- 合并规则:若 X->Y,X->Z,则 X->YZ 为 F 所蕴含
- 伪传递率:若 X->Y,WY->Z,则 XW->Z 为 F 所蕴含
- 分解规则:若 X->Y,Z 包含于 Y,则 X->Z 为 F 所蕴含
属性闭包原则
给定关系 R(U,F),其中 U = {A,B,C,D,E,H},F=
{A,C} -> {A,B,C,H,E} -> {A,B,C,D,H,E} =U
如何挑选候选键
- 不挑箭头右边,挑选箭头左边
- 要选择不能被其他属性决定的
