关系数据库的范式化

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

xxxx班xxxx2020年2月18日主要内容关系模式的范式数据库规范化问题的提出1函数依赖23主要内容第一部分数据库规范化问题的提出•示例:考虑为管理职工的工资信息而设计一个关系模式。职工级别工资赵明4500钱广5600孙志6700李开5600周祥6700第一部分软件无线电概述•问题:麻烦!好麻烦!!!–插入异常:①元组插不进去;②插入一个元组却要求插入多个元组。–删除异常:①删除时删掉了其他信息;②删除一个元组却删除了多个元组。更新异常:更新一个元组却要求更新多个元组。数据冗余:同一个数据在系统中多次重复出现。2020年2月18日第一部分数据库规范化问题的提出•解决之道:分解!再分解!!!原来数据库设计可以如此简单!•职工表级别表职工级别赵明4钱广5孙志6李开5周祥6级别工资4500560067002020年2月18日第二部分函数依赖函数依赖:任给R(U),U为属性集,x、y为U的子集,如果对于x的每个值,y有唯一确定的值与之对应,则称x决定y,或y函数依赖于x。记为:x→y。例1:关系模式Student(Sno,Sname,Ssex,Sage,Sdept)中,Sno函数决定Sname和Sdept,或Sname和Sdept函数依赖于Sno,记为Sno-Sname,Sno-Sdept注:函数依赖是属性间的一种联系第二部分函数依赖例1:一个学校数据库中的唯一关系模式Student(U,F),其中U={Sno,Sdept,Mname,Cname,Grade}F={Sno-Sdept,Sdept-Mname,(Sno,Cname)-Grade}SnoCnameGradeSdeptMname插入异常不能插入一个没有学生的系删除异常删除某系的一个学生时(如毕业)会删除系的相关信息数据冗余太大系主任出现的次数和该系学生选课总数相同Why?某些数据依赖引起的!分解为三个关系模式Student(Sno,Sdept,Sno-Sdept);SC(Sno,Cname,Grade,(Sno,Cname)-Grade);Dept(Sdept,Mname,Sdept-Mname);Mname:系主任第二部分函数依赖完全函数依赖:若函数依赖XY成立,且X是能够推出Y的最小集合,即不存在X的真子集Z,使ZY成立,则称Y完全函数依赖于X,简称Y完全依赖于X,记做,否则称Y部分函数依赖于X,简称Y部分依赖于X,记做。传递函数依赖:若XY,YZ,并且Y不能推出X,Z不是Y的真子集,则称Z传递依赖于X。XfYXpY2020年2月18日第三部分关系模式的范式“范式”是数据库设计过程中将要依据的准则,数据库结构必须满足这些准则,这些准则被称为规范化形式;在数据库设计过程中,对数据库进行检查和修改并使之符合范式的过程叫规范化。范式按照规范化的级别分为5种:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第一范式(5NF)。数据库设计过程中通常需要用到的是前三类范式。2NF3NFBCNF4NF5NF第三部分关系模式的范式第一范式(1NF)定义关系中每一分量不可再分。即不能以集合、序列等作为属性值。S#C#S1{C1,C2,C3}S#C#S1C1S1C2S1C3说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。第三部分关系模式的范式分量是否需要再分,与具体应用有关。如果用到值一部分,则需要进一步分割。如果只是查询出生日期,则它满足1NF。如果查询两人生日是否相同,则只比较月、日,需要将生日分解,就不满足1NF。姓名生日王军68.7.10张立69.7.10李明80.3.28姓名年月日王军687.10张立697.10李明803.28第三部分关系模式的范式第一范式(1NF)要求每个数据项都不能拆分两个或两个以上的数据项。姓名性别工资地址张建兵男2000杭州市上城区人民路126号,310007孙晓晴女1800杭州市西湖区滨河路269号,310012姓名性别工资城市地区街道门牌邮编张建兵男2000杭州上城区人民路126号310007孙晓晴女1800杭州西湖区滨河路269号310012将地址字段分为城市、地区、街道、门牌号和邮政编码多个字段,以满足1NF第三部分关系模式的范式定义若关系模式R1NF,并且每一个非主属性都完全函数依赖于R的码,则R2NF。第二范式(2NF)2NF是在1NF上消除了可能存在的非主属性对码的部分依赖。若R1NF且(所有候选)码只有一个属性,则R2NF。注意SnoGradeCnoSdeptSloc投影分解SnoGradeCno(a)SC(Sno,Cno,Grade)1NF2NF一定程度上解决了“异常”问题SdeptSlocSno(b)SL(Sno,Sdept,Sloc)SdeptSlocSno第三部分关系模式的范式第三部分关系模式的范式第二范式(1NF):如果一个数据表已满足1NF,而且该数据表中的任何一个非主键字段的数据项都完全函数依赖该数据表的主键字段,则满足2NF。该数据表的主键是“项目编号”,“负责人部门”完全依赖于“负责人”,而不取决与“项目编号“项目编号项目名称客户名称负责人负责人部门开工日期结束日期1ABCHHHHDSDSAAADEP12002.02.062003.11.252ABCYYYYWDSDTBBBDEP22001.04.052003.05.113IBMHHSSRRETTTAAADEP12002.06.082002.09.174HPSDFSSERERETAAADEP12001.05.092003.12.30第三部分关系模式的范式项目编号项目名称客户名称负责人开工日期结束日期1ABCHHHHDSDSAAA2002.02.062003.11.252ABCYYYYWDSDTBBB2001.04.052003.05.113IBMHHSSRRETTTAAA2002.06.082002.09.174HPSDFSSERERETAAA2001.05.092003.12.30负责人负责人部门AAADEP1BBBDEP2将数据表分成“项目表”和“部门表”,以满足2NF第三部分关系模式的范式第三范式(3NF)•如果关系模式R满足2NF,并且其任何一个非主属性都不传递函数依赖于任何候选关键字,则称R为第三范式,记为3NF。第三部分关系模式的范式SnoGradeCno(a)SC(Sno,Cno,Grade)2NFSdeptSlocSno(b)SL(Sno,Sdept,Sloc)Why?存在非主属性对码的传递函数依赖(Sloc传递依赖于Sno)插入异常无法插入一个尚未招生的系删除异常删除某系全部学生,则会删除该系信息数据冗余大某系的住处Sloc重复次数和该系学生数相同投影分解3NFSloc(b)DL(Sdept,Sloc)SdeptSdeptSno(a)SD(Sno,Sdept)第三部分关系模式的范式第三范式(3NF)数据表已满足第2范式,且其任何2个非主键字段的数据之间不存在函数依赖关系。员工编号姓名性别基本工资津贴奖金1张建兵男20002004302孙晓晴女1800180350“津贴”字段的数值是“基本工资”的10%,2个字段有依赖关系,不满足3NF,应删除“津贴”字段以满足3NF。第三部分关系模式的范式范式规范化的步骤:1、找到候选码2、找到非主属性3、判断范式级别4、分解第三部分关系模式的范式例题:有表格sc(sno,sname,sdept,mname,cno,cname,grade),判断其满足第几范式,并将其分解成满足3NF。解答:1、候选码(sno,cno)2、找到非主属性(sname,sdept,mname,cname,grade)3、(sno,cno)→snamesno→sname(sno,cno)→sdeptsno→sdept(sno,cno)→mnamesno→mname(sno,cno)→cnamecno→cname(sno,cno)→grade4、sc1(sno,sname,sdept,mname)sc2(cno,cname)sc3(sno,cno,grade)满足2NF5、sno→sdept,sdept→mname存在传递依赖分解成:sc11(sno,sname,sdept)sc12(sdept,mname)∴sc11(sno,sname,sdept)sc12(sdept,mname)sc2(cno,cname)sc3(sno,cno,grade)满足3NF

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功