第1页:第2章关系数据理论
第2章关系数据理论
第2页:主要内容
主要内容
- 2.1关系的数学定义
- 2.2关系代数
- 2.3关系演算
- 2.4关系的完整性
- 2.5关系操作
- 2.6关系的规范化
第3页:关系的数学定义
关系的数学定义
- 关系型数据库
- 目前最常用的数据库
- 所谓关系型数据库通常指的就
- 采用了关系模型的数据库管理系统
- 关系模型
- 建立在严格的数学概念的基础上的这里从集合论角度来讨论关系数据结构的形式化定义。
第4页:基本概念
基本概念
2.1.1基本概念1.域(Domain)2.笛卡尔积(Cartesian Product)3.关系(Relation)
第5页:域(Domain)
域(Domain)
- 例:
- 整数
- 实数
- 介于某个取值范围的整数
- 长度指定长度的字符串集合
- {‘男’,‘女’}
- 介于某个取值范围的日期
第6页:笛卡尔积
笛卡尔积
- 定义2.2给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}其中,每一个元素(d1,d2,…,dn)叫做一个n元组(n-tuple),或简称为元组(Tuple)。元素中的每一个值di叫做一个分量(Component)。
第7页:【例2-1】设给出两个域
【例2-1】设给出两个域
- 姓名集
- D1={谭丁,王静,张默}
- 性别集
- D2={男,女}笛卡尔积:
第8页:关系(Relation)
关系(Relation)
- 定义2.3D1,D2,…,Dn的子集叫做在域D1,D2,…,Dn上的关系,用R (D1,D2,…,Dn)表示。
- 这里R表示关系的名字,n是关系的目或度(Degree)。关系中的每个元素是关系中的元组,通常用t表示。
- 若Di(i=1,2,…,n)为有限集,其基数(Cardinalnumber)为mi(i=1,2,…,n),则D1,D2,…,Dn的基数为:m=
第9页:【例2-2】
【例2-2】
- 设:
- D1为教师集合T={t1,t2},
- D2为学生集合S={s1,s2,s3}
- D3为课程集合C={c1,c2}
- 则D1×D2×D3是一个三元关系,该关系的元组个数即基数为:2×3×2=12,是教师、学生、课程集合中元素构成的所有元组的集合。
第10页:关系是笛卡积的有限子
关系是笛卡积的有限子
- 关系是笛卡积的有限子集,所以关系也是一个二维表,表中行被称为元组或记录(Record),列称为属性(Attribute)或字段(Field),表的第一行是字段名的集合,被称为关系框架(或表结构),列中的元素为该字段(属性)的值,且值总是限定在某个值域(domain)内。n目关系必有n个属性。
第11页:关系与二维表
关系与二维表
- 关系的基本数据结构是二维表。每一张表称为一个具体的关系或简称为关系。二维表的表头也称为关系的型,二维表中的值(元组)也称为关系的值。
第12页:候选码、主码、主属性与非为主属性
候选码、主码、主属性与非为主属性
- 候选码
- 若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key)。
- 主码
- 若一个关系有多个候选码,则选定其中一个为主码(Primary key)。
- 主属性与非为主属性
- 主码的诸属性称为主属性(Primeattribute)。不包含在任何侯选码中的属性称为非主属性(Non-key attribute)。
- 全码
- 在最极端的情况下,关系模式的所有属性组是这个关系模式的侯选码,称为全码(All-key)。
第13页:关系的性质①列的同质性
关系的性质①列的同质性
。②列名唯一性。③列序无关性。④元组相异性。⑤行序无关性。⑥分量原子性。
第14页:关系的三种类型
关系的三种类型
- 基本关系(通常又
- 基本表或基表):是实际存在的表,它是实际存储数据的逻辑表示。
- 查询表
- 查询表是查询结果对应的表。
- 视图表
- 视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。
第15页:关系模式与关系数据库
关系模式与关系数据库
- 定义2.4关系的描述称为关系模式(RelationSchema)。它可以形式化地表示为:R(U,D,DOM,F)其中,R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。
第16页:关系数据库是对应于一
关系数据库是对应于一
- 关系数据库是对应于一个关系模型的某个应用领域所有关系的集合。
- 关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式(它遵循定义2.4),是对关系数据库的描述,是关系模式的集合。关系数据库的值也称为关系数据库,是关系的集合。
- 关系数据库模式与关系数据库通常统称为关系数据库。
第17页:关系代数
关系代数
- 关系代数
- 一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。
- 关系代数的运算对象
- 关系,运算结果亦为关系。关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符,
第18页:集合运算符
集合运算符
第19页:并(Union)
并(Union)
1.并(Union)关系R与关系S的并由属于R或属于S的元组组成,其结果关系仍为n目关系。记作:R∪S={t|t∈R∨t∈S}2.差(Difference)关系R与关系S的差由属于R而不属于S的所有元组组成,其结果关系仍为n目关系。记作:R-S={t|t∈R∧tS}3.交(Intersection)关系R与关系S的交由既属于R又属于S的元组组成。其结果关系仍为n目关系。记作:R∩S={t|t∈R∧t∈S}或:R∩S=R-(R-S)
第20页:广义笛卡尔积
广义笛卡尔积
- 4.广义笛卡尔积(ExtendedCartesianProduct)两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1×k2个元组。记作:R×S={|tr∈R∧ts∈S}
第21页:并运算示例
并运算示例
并CBAc1b1a1c2b2a1c1b2a2CBAc1b1a1c2b2a1c2b3a1c1b2a2CBAc2b2a1c2b3a1c1b2a2RSR∪S
本页主体为图示表格,源文本仅提取到图中标注文字,未还原为表格,建议对照原课件图片查看。
第22页:差运算示例
差运算示例
差CBAc1b1a1c2b2a1c1b2a2CBAc1b1a1CBAc2b2a1c2b3a1c1b2a2RSR-S
本页主体为图示表格,源文本仅提取到图中标注文字,未还原为表格,建议对照原课件图片查看。
第23页:交运算示例
交运算示例
交CBAc1b1a1c2b2a1c1b2a2CBAc2b2a1c1b2a2CBAc2b2a1c2b3a1c1b2a2RSR∩S
本页主体为图示表格,源文本仅提取到图中标注文字,未还原为表格,建议对照原课件图片查看。
第24页:广义笛卡尔积示例
广义笛卡尔积示例
广义笛卡尔积CBAc1b1a1c2b2a1c1b2a2CBAc1b1a1c1b1a1c1b1a1c2b2a1c2b2a1c2b2a1c1b2a2c1b2a2c1b2a2CBAc2b2a1c2b3a1c1b2a2RSR×SCBAc2b2a1c2b3a1c1b2a2c2b2a1c2b3a1c1b2a2c2b2a1c2b3a1c1b2a2
本页主体为图示表格,源文本仅提取到图中标注文字,未还原为表格,建议对照原课件图片查看。
第25页:专门的关系运算符
专门的关系运算符
第26页:选择(Selection)
选择(Selection)
- 选择又
- 限制(Restriction)。它是在关系R中选择满足给定条件的诸元组,记作:σF(R) = {t|t∈R∧F(t)= ‘真’}其中F表示选择条件,它是一个逻辑表达式,取逻辑值‘真’或‘假’。
- 选择运算
- 从行的角度进行的运算σ
第27页:【例2-4】
【例2-4】
- 已知关系T,求选择运算σA2>5۷A3≠’f’(T)的结果。A3A2A1f3ad2bd2cf6ef6gTA3A2A1d2bd2cf6ef6gσA2>5 V A3≠’f’(T)
第28页:【例2-9】
【例2-9】
- 写出选择关系Student中年龄在22岁以下的女学生的关系代数表达式。σssex=’女’∧sage<22(Student)
第29页:投影(Projection)
投影(Projection)
- 关系R上的投影
- 从R中选择出若干属性列组成新的关系。记作:πA(R)={t[A]|t∈R}其中A为R中的属性列。
- 投影操作主要
- 从列的角度进行运算π
第30页:【例2-5】
【例2-5】
- 求关系T的投影:πA1,A3(T)或π1,3(T)。A3A2A1f3ad2bd2cf6ef6gTA3A1fadbdcfefgπA1,A3(T)或π1,3(T)
第31页:连接(Join)
连接(Join)
3.连接(Join)连接也称为θ连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。记作:RS={trts|tr∈R∧ts∈S∧tr[A]θts[B]}其中A和B分别为R和S上度数相等且可比的属性组,θ是比较运算符。连接运算从R和S的笛卡尔积R×S中选取R关系在A属性组上的值与S关系在B属性组上值满足比较关系θ的元组。AθB
第32页:连接运算示例
连接运算示例
ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52AR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310RSC<ERS
本页主体为图示表格,源文本仅提取到图中标注文字,未还原为表格,建议对照原课件图片查看。
第33页:等值连接(equijoin)
等值连接(equijoin)
θ为“=”的连接运算称为等值连接。它是从关系R与S的笛卡尔积中选取A、B属性值相等的那些元组。即等值连接为:A=BR S={trts|tr∈R∧ts∈S∧tr[A]=ts[B]}A=B
第34页:等值连接示例
等值连接示例
例等值连接RSR.B=S.BAR.BCS.BEa1b15b13a1b26b27a2b38b310a2b38b32ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52RS
本页主体为图示表格,源文本仅提取到图中标注文字,未还原为表格,建议对照原课件图片查看。
第35页:自然连接(Natural join)
自然连接(Natural join)
它是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。即若R和S具有相同的属性组B,则自然连接可记作:R S={trts|tr∈R∧ts∈S∧tr[A]=ts[B]}
第36页:自然连接示例
自然连接示例
例ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52RS自然连接RSABCEa1b153a1b267a2b3810a2b382
本页主体为图示表格,源文本仅提取到图中标注文字,未还原为表格,建议对照原课件图片查看。
第37页:连接(续)
连接(续)
- 一般的连接操作是从行的角度进行运算。自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。AθBRS
第38页:外连接、左外连接、右外连接
外连接、左外连接、右外连接
- 外连接
- 如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTER JOIN)。
- 左外连接
- 如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFT OUTER JOIN或LEFT JOIN)
- 右外连接
- 如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHT OUTER JOIN或RIGHT JOIN)。
- 见教材P19例2-7
第39页:除(Division)
除(Division)
- 给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。
- R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。
- R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作:R÷S={tr[X]|tr
- R∧πY(S)
- Yx}Yx:x在R中的象集,x=tr[X]
第40页:除操作是同时从行和列
除操作是同时从行和列
第41页:设关系R、S分别为下图的(a)
设关系R、S分别为下图的(a)
例设关系R、S分别为下图的(a)和(b),R÷S的结果为图(c)
第42页:分析:关系R中
分析:关系R中
- 在关系R中,A可以取四个值{a1,a2,a3,a4}a1的象集为{(b1,c2),(b2,c3),(b2,c1)}a2的象集为{(b3,c7),(b2,c3)}a3的象集为{(b4,c6)}a4的象集为{(b6,c6)}
- S在(B,C)上的投影为{(b1,c2),(b2,c1),(b2,c3)}
- 只有a1的象集包含了S在(B,C)属性组上的投影所以R÷S={a1}
第43页:关系演算
关系演算
第44页:元组关系演算
元组关系演算
2.3.1元组关系演算 元组关系演算以元组变量作为谓词变元的基本对象。一种典型的元组关系演算语言是E.F.Codd提出ALPHA语言。 ALPHA语言主要有GET、PUT、HOLD、UPDATE、DELETE、DROP六条语句,语句的基本格式是:操作语句工作空间名(表达式):操作条件
第45页:检索操作检索操作用GET语句实现
检索操作检索操作用GET语句实现
- (1)简单检索(即不带条件的检索)
- (2)限定的检索(即带条件的检索)
- (3)带排序的检索
- (4)带定额的检索
- (5)用元组变量的检索
- (6)用存在量词的检索
- (7)带有多个关系的表达式的检索
- (8)用全称量词的检索
- (9)用两种量词的检索
- (10)聚集函数具体实例见教材P23例2-16至2-14
第46页:域关系演算
域关系演算
- 关系演算的另一种形式是域关系演算。域关系演算以元组变量的分量即域变量作为谓词变元的基本对象。
- 关系演算1975年由M.MZLOOf提出的QBE(Query By Example,即通过例子进行查询)就是一个很有特色的域关系演算语言,该语言于1978年在IBM370上得以实现。
- 具体操作步骤见教材P28例2-35~例2-43。
第47页:关系操作
关系操作
- 关系操作采用集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一集合的方式。
- 关系模型中常用的关系操作包括二类:
- 查询操作——选择、投影、连接、除、并、交、差。
- 增、删、改操作。
第48页:表达:关系代数关系代数是用对关
表达:关系代数关系代数是用对关
- (1)关系代数关系代数
- 用对关系的运算来表达查询要求的方式。
- (2)关系演算关系演算
- 用谓词来表达查询要求的方式。
第49页:关系的完整性
关系的完整性
- 关系模型的完整性规则
- 对关系的某种约束条件。关系模型中可以有三类完整性约束:
- 实体完整性和参照完整性
- 关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。
第50页:实体完整性
实体完整性
- 规则2.1实体完整性规则若属性A是基本关系R的主属性,则属性A不能取空值。
- 说明:(1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。(2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。(3)关系模型中以主码作为唯一性标识。(4)主码中的属性即主属性不能取空值。主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性
第51页:参照完整性
参照完整性
第52页:关系间的引用在关
关系间的引用在关
- 学生关系引用了专业关系的主码“专业号”。
- 学生关系中的“专业号”值必须是确实存在的专业的专业号,即专业关系中有该专业的记录。
第53页:例1:学生实体、专业实体学生(学号
例1:学生实体、专业实体学生(学号
例1,学生实体、专业实体学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)
第54页:例2:学生、课程
例2:学生、课程
例2学生、课程,学生与课程之间的多对多的联系。学生(学号,姓名,性别,专业号,年龄)课程(课程号,课程名,学分)选修(学号,课程号,成绩)
第55页:学生选课E-R示例
学生选课E-R示例
学生学生选课课程
本页以图示呈现,正文文字较少,建议对照原课件图片查看。
第56页:例3:学生实体及其内部的一对多联系学
例3:学生实体及其内部的一对多联系学
- “学号”
- 主码,“班长”是外码,它引用了本关系的“学号”
- “班长”必须
- 确实存在的学生的学号
第57页:.外码(Foreign Key)
.外码(Foreign Key)
- 设F
- 基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码
- 基本关系R
- 参照关系(ReferencingRelation)
- 基本关系S
- 被参照关系(ReferencedRelation)或目标关系(TargetRelation)
第58页:例1:学生关系的“专业号”与专业关
例1:学生关系的“专业号”与专业关
- 学生关系的“专业号”与专业关系的主码“专业号”相对应
- “专业号”属性是学生关系的外码
- 专业关系是被参照关系,学生关系为参照关系
第59页:例2:选修关系的“学号”与学生关系
例2:选修关系的“学号”与学生关系
- 选修关系的“学号”与学生关系的主码“学号”相对应
- 选修关系的“课程号”与课程关系的主码“课程号”相对应
- “学号”和“课程号”是选修关系的外码
- 学生关系和课程关系均为被参照关系
- 选修关系为参照关系
第60页:例3:“班长”与本身的主码“学号”
例3:“班长”与本身的主码“学号”
第61页:关系R和S不一定是不
关系R和S不一定是不
- 关系R和S不一定是不同的关系
- 目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或一组)域上
- 外码并不一定要与相应的主码同名当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别
第62页:参照完整性
参照完整性
- 或者取空值(F的每个属性值均为空值)
- 或者等于S中某个元组的主码值
第63页:例1:空值
例1:空值
- (1)空值,表示尚未给该学生分配专业
- (2)非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配一个不存在的专业
第64页:例2:选修关系中的主属性
例2:选修关系中的主属性
- (1)选修关系中的主属性,不能取空值
- (2)只能取相应被参照关系中已经存在的主码值
第65页:例3:空值
例3:空值
- (1)空值,表示该学生所在班级尚未选出班长
- (2)非空值,该值必须是本关系中某个元组的学号值
第66页:用户定义的完整性
用户定义的完整性
- 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。
- 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。
第67页:例:课程(课程号,课程名,学分)
例:课程(课程号,课程名,学分)
- “课程号”属性必须取唯一值
- 非主属性“课程名”也不能取空值
- “学分”属性只能取值{1,2,3,4}
第68页:关系的规范化
关系的规范化
- 2.
- 6.1关系模式的设计问题
- 2.
- 6.2函数依赖
- 2.
- 6.3码的形式化定义
- 2.
- 6.4关系范式
第69页:关系模式的设计问题
关系模式的设计问题
- (1)数据冗余度高
- (2)数据修改复杂
- (3)插入异常
- (4)删除异常
第70页:关系规范化的目的
关系规范化的目的
- 关系规范化的目的在于控制数据冗余、避免插入和删除异常的操作,从而增强数据库结构的稳定性和灵活性。
- 关系规范化的过程实质上是以结构更单纯、更规范的关系逐步取代原有关系的过程,或者说,是有一个低级范式通过模式分解逐步转换为若干个高级范式的过程。
第71页:函数依赖
函数依赖
- 定义2.6设R(U)是属性集U上的关系模式,X,Y是U的子集,r是R的任意具体关系,对于r的任意两个元组s,t,由s[X]=t[X],能导致s[Y]=t[Y],则称X函数决定Y,或Y函数依赖于X,记为X→Y。
- 由于函数依赖类似于变量之间的单值函数关系,所以也可以做如下定义:
- 设R(U),X,Y的含义同上,若R(U)的所有关系r都存在着:对X的每一具体值,都有Y唯一的具体值与之对应,则称X函数决定Y,或Y函数依赖于X。
第72页:码的形式化定义定
码的形式化定义定
- 由候选码可以引出下列一些概念:
- 主码一个关系的候选码不是唯一的。若候选码多于一个,则选定其中的一个作为主码。因此一个关系的主码是唯一的。
- 主属性包含在任何一个候选码中的属性,叫做主属性。
- 非主属性不包含在任何一个候选码中的属性,叫做非主属性。
- 全码整个属性组是码,称为全码。
第73页:关系范式
关系范式
- 范式
- 符合某一种级别的关系模式的集合。
- 范式的种类
- 第一范式(1NF)第二范式(2NF)第三范式(3NF)BC范式(BCNF)第四范式(4NF)第五范式(5NF)
第74页:各种范式之间的联系
各种范式之间的联系
各种范式之间存在联系某一关系模式R为第n范式,可简记为R∈nNF。
第75页:第一范式(1NF)
第一范式(1NF)
- 1NF的定义如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。
- 第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。
- 但是满足第一范式的关系模式并不一定是一个好的关系模式。
第76页:关系模式SLC示例
关系模式SLC示例
- 函数依赖包括:(Sno, Cno)FGradeSno → Sdept(Sno, Cno)PSdeptSno → Sloc(Sno, Cno)PSlocSdept → Sloc
第77页:SLC关系模式分析
SLC关系模式分析
分析SnoCnoGradeSdeptSlocSLC
本页以图示呈现,正文文字较少,建议对照原课件图片查看。
第78页:SLC不是一个好的关系模式
SLC不是一个好的关系模式
- (1)插入异常假设Sno=95102,Sdept=IS,Sloc=N的学生还未选课,因课程号是主属性,因此该学生的信息无法插入SLC。
- (2)删除异常假定某个学生本来只选修了3号课程这一门课。现在因身体不适,他连3号课程也不选修了。因课程号是主属性,此操作将导致该学生信息的整个元组都要删除。
第79页:SLC不是一个好的关系模式
SLC不是一个好的关系模式
- (3)数据冗余度大如果一个学生选修了10门课程,那么他的Sdept和Sloc值就要重复存储了10次。
- (4)修改复杂例如学生转系,在修改此学生元组的Sdept值的同时,还可能需要修改住处(Sloc)。如果这个学生选修了K门课,则必须无遗漏地修改K个元组中全部Sdept、Sloc信息。
第80页:SLC分解的解决方法
SLC分解的解决方法
- 原因Sdept、Sloc部分函数依赖于码。
- 解决方法SLC分解为两个关系模式,以消除这些部分函数依赖SC(Sno,Cno,Grade)SL(Sno,Sdept,Sloc)
第81页:函数依赖
函数依赖
图:SnoCnoGradeSCSLSnoSdeptSloc
第82页:第二范式(2NF)
第二范式(2NF)
- 定义2.11若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则R∈2NF。例:SLC(Sno, Sdept, Sloc, Cno, Grade)∈1NFSLC(Sno, Cno, Sdept, Sloc, Grade)∈2NFSC(Sno,Cno,Grade)∈2NFSL(Sno,Sdept,Sloc)∈2NF
第83页:采用投影分解法将一个
采用投影分解法将一个
- 采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。
- 将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。
第84页:SLC函数依赖图
SLC函数依赖图
函数依赖图:SLSnoSdeptSloc
本页以图示呈现,正文文字较少,建议对照原课件图片查看。
第85页:解决方法
解决方法
- 采用投影分解法,把SL分解为两个关系模式,以消除传递函数依赖:SD(Sno,Sdept)DL(Sdept,Sloc)SD的码为Sno,DL的码为Sdept。
第86页:SD与DL的码分析
SD与DL的码分析
分析SD的码为Sno,DL的码为Sdept。SnoSdeptSDSdeptSlocDL
第87页:第三范式
第三范式
- Y),使得X→Y,Y→X,Y→Z,成立,则称R∈3NF。例,SL(Sno, Sdept, Sloc)∈2NFSL(Sno, Sdept, Sloc)∈3NFSD(Sno,Sdept)∈3NFDL(Sdept,Sloc)∈3NF
第88页:3NF的判定与分解
3NF的判定与分解
- 若R∈3NF,则R的每一个非主属性既不部分函数依赖于候选码也不传递函数依赖于候选码。
- 如果R∈3NF,则R一定也满足2NF的条件。
- 采用投影分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上解决原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。
- 将一个2NF关系分解为多个3NF的关系后,并不能完全消除关系模式中的各种异常情况和数据冗余。
第89页:BC范式(BCNF)
BC范式(BCNF)
- 定义2.13设关系模式R∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有候选码,那么R∈BCNF。若R∈BCNF
- 每一个决定属性集(因素)都包含(候选)码
- R中的所有属性(主,非主属性)都完全函数依赖于码
- R∈3NF
- 若R∈3NF则R不一定∈BCNF
第90页:BCNF示例
BCNF示例
- 每一教师只教一门课。每门课由若干教师教,某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选课的名称:(S,J)→T,(S,T)→J,T→J
第91页:小结:关系模型的基本概念
小结:关系模型的基本概念
- 关系代数
- 掌握关系代数中的并、差、交、广义笛卡尔积等传统的集合运算;
- 关系演算
- 选择、投影、连接、除等专门的关系运算,掌握元组关系演算和域关系演算。
- 关系的完整性
- 掌握实体完整性、参照完整性、用户定义的完整性的含义。
- 范式
- 掌握基本范式的概念、函数依赖、码和外码、主属性、非主属性、部分函数依赖、完全函数依赖和传递函数依赖的概念、1NF、2NF、3NF、BCNF范式的基本定义及规范方法。
第92页:作业:习题二/4
作业:习题二/4