第四章关系数据库设计理论 4.1数据依赖 4.2范式 4.3关系模式的规范化
第四章关系数据库设计理论 4.1 数据依赖 4.2 范式 4.3 关系模式的规范化
4.1数据依赖 4.1.1关系模式中的数据依赖 -完整的关系模式的描述:R(U,D,DOM,F) ●R关系名 ●U属性组 ●D是U的取值范围,是域的集合 ●DOM是属性向域映象的集合 ●F是属性间数据的依赖关系集合 一关系模式是静态的、稳定的;关系是动态的,不同时 刻关系模式中的关系可能不同,但关系都必须满足关 系模式中数据依赖关系集合F指定的完整性约束 影响数据库模式设计的主要是U和F,所以一般关系 模式简化为:R(U,F)
4.1 数据依赖 4.1.1 关系模式中的数据依赖 – 完整的关系模式的描述:R(U,D,DOM,F) ⚫R关系名 ⚫U属性组 ⚫D是U的取值范围,是域的集合 ⚫DOM是属性向域映象的集合 ⚫F是属性间数据的依赖关系集合 – 关系模式是静态的、稳定的;关系是动态的,不同时 刻关系模式中的关系可能不同,但关系都必须满足关 系模式中数据依赖关系集合F指定的完整性约束 – 影响数据库模式设计的主要是U和F,所以一般关系 模式简化为:R(U, F)
4.1.2数据依赖对关系模式的影响 ●数据依赖有: 一函数依赖、多值依赖和连接依赖 口一个关系模式示例 U={Sno,Sdept,Mname,Cname,Grade} F={Sno->Sdept,Sdept->Mname,(Sno,Cname)->Grade) ●该关系模式存在如下问题 数据冗余太大:系主任名字重复出现,和所有学生 的所有课程成绩次数一样 更新异常:更换系主任必须修改每一个学生信息 插入异常:刚成立的系如果还没有招生就无法存储 系主任信息 -删除异常:某个系的学生全部毕业删除时会丢失系 主任信息
4.1.2 数据依赖对关系模式的影响 ⚫ 数据依赖有: – 函数依赖、多值依赖和连接依赖 ❑一个关系模式示例 U={Sno,Sdept,Mname,Cname,Grade} F={Sno->Sdept, Sdept->Mname, (Sno,Cname)->Grade} ⚫ 该关系模式存在如下问题 : –数据冗余太大:系主任名字重复出现,和所有学生 的所有课程成绩次数一样 –更新异常:更换系主任必须修改每一个学生信息 –插入异常:刚成立的系如果还没有招生就无法存储 系主任信息 –删除异常:某个系的学生全部毕业删除时会丢失系 主任信息
4.1.3相关概念 >函数依赖 R(U)是一个关系模式,U是R的属性集合,X和Y 是U的子集,对于R(U)的任意一个可能的关系r, 如果r中不存在两个元组w,V,使得wX]=vX]而 w[Y]◇v[Y],称X函数决定Y,或Y函数依赖于X, 记X->Y >平凡的和非平凡的函数依赖 关系模式R(U),X和Y是U的子集,如果X->Y, 且YX,则称X->Y是非平凡的函数依赖,否则称 平凡的函数依赖,我们讨论的都是非平凡的函数依 赖
4.1.3 相关概念 ➢ 函数依赖 R(U)是一个关系模式,U是R的属性集合,X和Y 是U的子集,对于R(U)的任意一个可能的关系r, 如果r中不存在两个元组w,v,使得w[X]=v[X]而 w[Y]<>v[Y],称X函数决定Y,或Y函数依赖于X, 记X->Y ➢ 平凡的和非平凡的函数依赖 关系模式R(U), X和Y是U的子集,如果X->Y, 且YX,则称X->Y是非平凡的函数依赖,否则称 平凡的函数依赖,我们讨论的都是非平凡的函数依 赖
·完全函数依赖和部分函数依赖 关系模式R(U),如果XY,且对于任意的X的真子 集X都有X十Y,则称Y完全函数依赖于X,记XY。 反之则Y不完全依赖于X,称Y部分依赖于X,记XPY ●传递函数依赖 关系模式R(U),如果X一>Y,Y一>Z,且Y十+X,则 称Z传递函数依赖于X,记X,Z ●码的重新定义 关系模式R(U,F),K为属性组合,若KEU,则K是 个候选码
⚫ 完全函数依赖和部分函数依赖 关系模式R(U),如果X Y,且对于任意的X的真子 集X’都有X’ \ Y,则称Y完全函数依赖于X,记X f Y。 反之则Y不完全依赖于X,称Y部分依赖于X,记X P Y ⚫ 传递函数依赖 关系模式R(U),如果X->Y,Y->Z,且Y \ X,则 称Z传递函数依赖于X,记X t Z ⚫ 码的重新定义 关系模式R(U,F),K为属性组合,若K f U,则K是一 个候选码
4.2范式 ●范式定义 数据依赖满足某种条件级别的关系模式的集合 。日前共6种范式: INF-2NF-3NF-BCNF-4NF-5NF
4.2 范式 ⚫ 范式定义 数据依赖满足某种条件级别的关系模式的集合 ⚫ 目前共6种范式: 1NF2NF3NFBCNF4NF5NF
4.2.1第一范式(1NF) ●INF定义 -如果一个关系模式R的所有属性都是原子的,即不可 再分的基本数据项,则R∈INF 例:SCL(S#,SN,SA,CLS,MON,C#,CN,CRD,GR) 属于1NF它有以下问题: ·数据冗余大,如MON,CRD等 ·插入异常,当无课程时学生信息无法插入 删除异常,当某个学生的选课信息全部删除时无法 保留学生基本信息
4.2.1 第一范式(1NF) ⚫ 1NF定义 –如果一个关系模式R的所有属性都是原子的,即不可 再分的基本数据项,则R1NF 例:SCL(S#, SN, SA, CLS, MON, C#, CN, CRD, GR) 属于1NF它有以下问题: ▪ 数据冗余大,如MON,CRD等 ▪ 插入异常,当无课程时学生信息无法插入 ▪ 删除异常,当某个学生的选课信息全部删除时无法 保留学生基本信息
SCL存在的函数依赖关系 (S#,C#)fGR (S#,C#)P→SN S#f+SN (S#,C#)-PSA S# f+SA (S#,C#)P→CLSS#fCLS (S#,C#)P→CNC# fCN (S#,C#)P→CRDC#ECRD CLS→MONS#t,MON
SCL存在的函数依赖关系 (S#,C#) f GR (S#,C#) P SN S# f SN (S#,C#) P SA S# f SA (S#,C#) P CLS S# f CLS (S#,C#) P CN C# f CN (S#,C#) P CRD C# f CRD CLS MON S# t MON
4.2.2第二范式(2NF) ●2NF定义 -如果一个关系模式R∈INF,并且每一非主属性都完全 依赖于R的码,则R∈2NF。 -显然码只包含一个属性的R如果是1NF,则必是2NF 例:SL(S#,SN,SA,CLS,MON)C(C#,CN,CRD) SC(S#,C#,GR)都属于2NF 存在问题: -数据冗余大,如MON 一插入异常,无学生信息无法插入班长信息 删除异常,当学生的信息删除无法保存班长
4.2.2 第二范式(2NF) ⚫ 2NF定义 – 如果一个关系模式R1NF,并且每一非主属性都完全 依赖于R的码,则R2NF。 – 显然码只包含一个属性的R如果是1NF,则必是2NF 例:S_L(S#,SN,SA,CLS,MON) C(C#,CN,CRD) S_C(S#,C#,GR)都属于2NF 存在问题: – 数据冗余大,如MON – 插入异常,无学生信息无法插入班长信息 – 删除异常,当学生的信息删除无法保存班长
函数依赖关系: S#fSA S#fCLS S#-f+SN CLS→MONS#t+MON C#f+CN C#CRD (S#,C#)£→GR
函数依赖关系: S# f SA S# f CLS S# f SN CLS MON S# t MON C# f CN C# f CRD (S#,C#) f GR