欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    关于表的规范化.docx

    • 资源ID:63335592       资源大小:63.60KB        全文页数:17页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    关于表的规范化.docx

    规范化:满足第一范式是表的最低要求,不满足第一范式要求的数据库(表)就不能称之为关系数据库。在此基础上满足更高要求的称为第二范式,简记为2NF,其余依此类推,还有第三范式(3NF)、BC范式(BCNF)、第四范式(4NF)、第五范式(5NF)。BCNF可以看作是修正了的第三范式。把表从低范式,通过投影运算转换成若干高一级范式的过程,叫做表的规范化。一般地说,表满足的范式级别越高,设计的表越是规范,表的质量越高,数据的冗余度越小,共享性越高,所占的存储空间越少,并将数据的不一致性减少到最低程度,这也是对表进行规范化的目的。但是,高范式的数据库查询起来比较复杂。所以,不应一味追求高范式,一般满足第三范式或BC范式就可以了二、表的的规范化化1、第一一范式(1NFF)如前所述述,第一一范式要要求表的的每一个个字段都都是不可可再分的的最小单单位。例1:学学生(学学号,姓姓名,学学院,地地址,选选修课程程成绩(课程号号,课程程名,成成绩)表数据据如下:学号姓名学院地址选修课程程成绩(课程号号,课程程名,成成绩)99011张丽管理管2011C0011,高等等数学,9099011张丽管理管2011C0022,英语语,80099011张丽管理管2011C0033,计算算机,66699022李锋电子电1011C0044,法律律,788表一不满满足第一一范式的的表显然,这这样的表表是不满满足第一一范式的的。因为为选修课课程成绩绩字段还还可分为为3个字段段即(课课程号,课程名名,成绩绩)。如果不把把它进行行规范化化,即转转换成满满足第一一范式的的表,将将会产生生很多问问题,如如:删除除异常,即本来来只想删删除成绩绩的,不不得不把把课程号号和课程程名也删删除了!转换的方方法就是是把可以以拆分的的字段进进行拆分分,即把把选修课课程成绩绩分解成成3个字段段:课程号号,课程名名,成绩。变成成下面满满足第一一范式的的表:学号姓名学院地址课程号课程名成绩99011张丽管理管2011C0011高等数学学9099011张丽管理管2011C0022英语8099011张丽管理管2011C0033计算机6699022李锋电子电1011C0044法律78表二  满足第第一范式式的表2、第二二范式(2NFF)一个关系系应满足足1NFF是最起起码的条条件。但但是,仅仅满足11NF的的关系还还可能存存在一些些问题。例2:表表二中存存在以下下的问题题:l        问题1:数据据冗余度度大。张张丽选几几门课程程,都必必须输入入所有几几个她的的相关信信息,同同时,如如果有几几千个人人选修高高等数学学课,就就得输入入几千个个“高等数数学”。如果果要修改改“高等数数学”这个课课程名称称,对于于几千个个课程名名中,只只要漏改改一个,将造成成数据的的不一致致性。l        问题2:删除除异常。我们知知道,这这个表中中的关键键字为学学号和课课程号,它们不不能为空空值,而而当李锋锋退学时时,不可可能只删删除李锋锋的学号号和姓名名,只能能删除了了李锋的的整条记记录,这这时相应应的课程程号为CC0044的法律律也被删删除,如如果这个个表中只只有李锋锋一人选选法律课课,该记记录删除除后,下下次将无无法查询询法律课课的课程程号。l        问题3:插入入记录异异常。与与删除异异常相似似,如果果李锋刚刚入学,还没有有选修任任何一门门课程,无法知知道他选选修的课课程号,而课程程号为关关键字,不能为为空,因因此,李李锋这个个记录也也不能输输入。造成出现现这些问问题的原原因是因因为这个个表不满满足第二二范式。l        如何判判断一个个表是否否满足第第二范式式呢,判判断方法法是:(1)、找出表表的关键键字。(2)、如果只只有一个个关键字字,若每每一个非非关键字字都依赖赖于这个个关键字字,则表表满足第第二范式式,否则则不是。什么是依依赖(关关系)呢呢?例:某表中中有两个个字段:学号、姓名,对于每每一个学学号,只只有一个个姓名与与之对应应,则称称姓名依依赖于学学号,或或称学号号唯一确确定姓名名,记作作:学号号姓名。例3:学学生(学学号,姓姓名,学学院)表表是否满满足第二二范式?答:例4:学学生(学学号,姓姓名,学学院,成成绩)表表是否满满足第二二范式?答:(3)、如果有有两个或或两个以以上的关关键字,那么,把这些些关键字字看成是是一个组组合关键键字,若若每一个个非关键键字都能能完全依依赖于组组合关键键字,则则表满足足第二范范式,否否则不是是。例5:成成绩(学学号,课课程,成成绩)表表是否满满足第二二范式?l        定义:如果一一个表满满足1NNF,且且每一个个非关键键字都完完全依赖赖于关键键字,则则这个表表满足第第二范式式。l        第一范范式转换换成第二二范式的的方法:找出依赖赖关系,将能完完全依赖赖于主键键的字段段从表中中提取出出来,同同主键一一起组成成一个新新的关系系。  例77:表二二(学号号,姓名名,学院院,地址址,课程程号,课课程名,成绩)的依赖赖关系如如下:显显然,不不满足22NF。转换的过过程就是是拆分的的过程,也是一一个消除除部分依依赖的过过程。但但是,要要注意,拆拆分的结结果应该该包含原原表的所所有字段段!(即无损损分解)3、第三三范式(3NFF)通过分析析,发现现表A仍然在在一定程程度上存存在上面面提及的的三个问问题,要要消除和和减少它它们,还还得把它它分解成成满足更更高范式式(即33NF)的表.l        满足第第三范式式的判断断方法:判断表在在满足第第二范式式的基础础上是否否有传递递依赖的的情况,如果有有,不是是第三范范式,否否则是。l        将非第第三范式式规范为为第三范范式的方方法:把产生传传递依赖赖关系的的非关键键字段抽抽出来,同关键键字一起起建立新新的表。例8:表表A(学号号,姓名名,学院院,地址址)中,存在地地址传递递依赖于于学号的的关系,即:学号学学院,学学院地址。把地址从从原表中中分出来来,同关关键字一一起建立立新的表表形成表表A1(学院、地地址),原表就就可消除除了传递递依赖关关系。表表A分解为为:表A1 (学院、地地址)    表A22(学号、姓姓名、学学院)   小小结:表表的规范范化中,1NFF是要满满足每个个字段都都是不可可再分的的;2NNF是在在1NFF的基础础上消除除部分依依赖关系系(只保保留完全全依赖),3NNF是在在2NFF的基础础上进一一步消除除传递依依赖关系系。二:在设计和和操作维维护数据据库时,关键的的步骤就就是要确确保数据据正确地地分布到到数据库库的表中中。使用用正确的的数据结结构,不不仅便于于对数据据库进行行相应的的存取操操作,而而且可以以极大地地简化应应用程序序的其他他内容(查询、窗体、报表、代码等等)。正正确进行行表设计计的正式式名称就就是"数数据库规规范化""。数据冗余余数据应该该尽可能能少地冗冗余,这这意味着着重复数数据应该该减少到到最少。比如说说,一个个部门雇雇员的电电话不应应该被存存储在不不同的表表中, 因为这这里的电电话号码码是雇员员的一个个属性。如果存存在过多多的冗余余数据,这就意意味着要要占用了了更多的的物理空空间,同同时也对对数据的的维护和和一致性性检查带带来了问问题,当当这个员员工的电电话号码码变化时时,冗余余数据会会导致对对多个表表的更新新动作,如果有有一个表表不幸被被忽略了了,那么么就可能能导致数数据的不不一致性性。规范化实实例为了说明明方便,我们在在本文中中将使用用一个SSAMPPLE数数据表,来一步步一步分分析规范范化的过过程。首先,我我们先来来生成一一个的最最初始的的表。CREAATE TABBLE "SAAMPLLE" ( "PRRJNUUM" INTTEGEER NNOT NULLL, "PRRJNAAME"" VAARCHHAR(2000), "EMMYNUUM" INTTEGEER NNOT NULLL, "EMMYNAAME"" VAARCHHAR(2000), "SAALCAATEGGORYY" CCHARR(1), "SAALPAACKAAGE"" INNTEGGER) IIN ""USEERSPPACEE1"ALTEER TTABLLE ""SAMMPLEE" ADDD PRRIMAARY KEYY(""PRJJNUMM", "EMMYNUUM");Inseert intto SSAMPPLE(PRJJNUMM, PPRJNNAMEE, EEMYNNUM, EMMYNAAME, SAALCAATEGGORYY, SSALPPACKKAGEE)valuues(10000011, ''TPMMS', 20000001, 'Joohnsson'', ''A', 20000), (10000011, ''TPMMS', 20000002,'Chrristtinee', 'B'', 330000), (10000001, 'TPPMS'', 22000003, 'KKeviin', 'CC', 40000), (11000002,'TCTT', 20000011, ''Johhnsoon', 'AA', 20000), (11000002, 'TTCT'', 22000004, 'AApplle', 'BB',30000);表1-11考察表11-1,我们可可以看到到,这张张表一共共有六个个字段,分析每每个字段段都有重重复的值值出现,也就是是说,存存在数据据冗余问问题。这这将潜在在地造成成数据操操作(比比如删除除、更新新等操作作)时的的异常情情况,因因此,需需要进行行规范化化。第一范式式参照范式式的定义义,考察察上表,我们发发现,这这张表已已经满足足了第一一范式的的要求。(1NFF:字段段具有原原子性,不可再再分; 比如说籍籍贯这个个字段,里面是是“湖北北武汉”的话,它就违违反了原原子性,因为湖湖北武汉汉还可以以再分的的更具体体,分为为“湖北北”和“武汉” )1、因为为这张表表中字段段都是单单一属性性的,不不可再分分;2、而且且每一行行的记录录都是没没有重复复的;3、存在在主属性性,而且且所有的的属性都都是依赖赖于主属属性;4、所有有的主属属性都已已经定义义事实上在在当前所所有的关关系数据据库管理理系统(DBMMS)中中,都已已经在建建表的时时候强制制满足第第一范式式。因此此,这张张SAMMPLEE表已经经是一张张满足第第一范式式要求的的表。考考察表11-1,我们首首先要找找出主键键。可以以看到,属性对对<Prrojeect Nummberr, EEmplloyeee NNumbber>>是主键键,其他他所有的的属性都都依赖于于该主键键。从一范式式转化到到二范式式根据第二二范式的的定义,转化为为二范式式就是消消除部分分依赖。(2NFF:组合合关键字字的表,不存在在组合关关键字中中的任意意字段决决定其它它非关键键字段(也就是是说不能能有两个个组合键键组成一一个主键键)考察表11-1,我们可可以发现现,非主主属性<<Proojecct NNamee>部分分依赖于于主键中中的<PProjjectt Nuumbeer> 非主主属性<<Empployyee Namme>,<Saalarry CCateegorry>和和<Saalarry ppackkagee>都部部分依赖赖于主键键中的<<Empployyee Nummberr>;表1-11的形式式,存在在着以下下潜在问问题:1 数数据冗余余:每一一个字段段都有值值重复;2 更更新异常常:比如如<Prrojeect Namme>字字段的值值,比如如对值""TPMMS"了了修改,那么就就要一次次更新该该字段的的多个值值;3 插插入异常常:如果果新建了了一个PProjjectt,名字字为TPPT, 但是还还没有EEmplloyeee加入入,那么么<Emmplooyeee Nuumbeer>将将会空缺缺,而该该字段是是主键的的一部分分,因此此将无法法插入记记录;Inseert intto SSAMPPLE(PRJJNUMM, PPRJNNAMEE, EEMYNNUM, EMMYNAAME, SAALCAATEGGORYY, SSALPPACKKAGEE) vvaluues(10000033, ''TPTT', NULLL, NULLL, NULLL, NULLL)4 删删除异常常:如果果一个员员工 22000003, Keevinn 离职职了,要要将该员员工的记记录从表表中删除除,而此此时相关关的Saalarry信息息 C 也将丢丢失, 因为再再没有别别的行纪纪录下 Sallaryy C的的信息。Deleete froom ssampple wheere EMYYNUMM = 20000033Sellectt diistiinctt SAALCAATEGGORYY, SSALPPACKKAGEE frrom SAMMPLEE因此,我我们需要要将存在在部分依依赖关系系的主属属性和非非主属性性从满足足第一范范式的表表中分离离出来,形成一一张新的的表,而而新表和和旧表之之间是一一对多的的关系。由此,我们得得到:CREAATE TABBLE "PRROJEECT"" ( "PRRJNUUM" INTTEGEER NNOT NULLL, "PRRJNAAME"" VAARCHHAR(2000) IIN ""USEERSPPACEE1"ALTEER TTABLLE ""PROOJECCT" ADDD PRRIMAARY KEYY(""PRJJNUMM");Inseert intto PPROJJECTT(PRRJNUUM, PRJJNAMME) valluess(10000001, 'TPPMS''), (10000002, 'TCCT');表1-22表 11-3EMYNNUMEMYNNAMEESALCCATEEGORRYSALPPACKKAGEE2000001JohnnsonnA200002000003KeviinC400002000004ApplleB30000CREAATE TABBLE "EMMPLOOYEEE" ( "EMMYNUUM" INTTEGEER NNOT NULLL, "EMMYNAAME"" VAARCHHAR(2000), "SALLCATTEGOORY"" CHHAR(1), "SALLPACCKAGGE" INTTEGEER) IIN ""USEERSPPACEE1"ALTEER TTABLLE EEMPLLOYEEEADDD PRRIMAARY KEYY(EEMYNNUM);Inseert intto EEMPLLOYEEE(EEMYNNUM, EMMYNAAME, SAALCAATEGGORYY, SSALPPACKKAGEE) vvaluues(20000011,'Johhnsoon', 'AA', 20000), (22000002, 'CChriistiine'', ''B', 30000), (20000033, ''Kevvin'', ''C',40000), (20000004, 'Appplee', 'B'', 330000);CREAATE TABBLE "PRRJ_EEMY"" ( "PRRJNUUM" INTTEGEER NNOT NULLL, "EMMYNUUM" INTTEGEER NNOT NULLL) IIN ""USEERSPPACEE1"ALTEER TTABLLE ""PRJJ_EMMY" ADDD PRRIMAARY KEYY(""PRJJNUMM", "EMMYNUUM");Inseert intto PPRJ_EMYY(PRRJNUUM, EMYYNUMM) vvaluues(10000011, 22000001), (10000011, 22000002),(10000011, 22000003), (10000022, 22000001), (10000022, 22000004);同时,我我们把表表1-11的主键键,也就就是表11-2和和表1-3的各各自的主主键提取取出来,单独形形成一张张表,来来表明表表1-22和表11-3之之间的关关联关系系:表 1-4这时候我我们仔细细观察一一下表11-2, 1-3, 1-44, 我我们发现现插入异异常已经经不存在在了,当当我们引引入一个个新的项项目 TTPT 的时候候,我们们只需要要向表11-2 中插入入一条数数据就可可以了, 当有有新人加加入项目目 TPPT 的的时候,我们需需要向表表1-33, 11-4 中各插插入一条条数据就就可以了了。虽然然我们解解决了一一个大问问题,但但是仔细细观察我我们还是是发现有有问题存存在。从二范式式转化到到三范式式考察表前前面生成成的三张张表,我我们发现现,表11-3存存在传递递依赖关关系,即即:关键键字段<< Emmplooyeee Nuumbeer >> -> 非非关键字字段< Sallaryy Caateggoryy > ->>非关键键字段<< Saalarry PPackkagee >。而这是是不满足足三范式式的规则则的,存存在以下下的不足足:1、 数数据冗余余:<SSalaary Cattegoory>>和<SSalaary Pacckagge>的的值有重重复;2、 更更新异常常:有重重复的冗冗余信息息,修改改时需要要同时修修改多条条记录,否则会会出现数数据不一一致的情情况;3、 删删除异常常:同样样的,如如果员工工 20000003 KKeviin 离离开了公公司,会会直接导导致 SSalaary C 的的信息的的丢失。Deleete froom EEMPLLOYEEE wwherre EEMYNNUM = 22000003SSeleect disstinnct SALLCATTEGOORY, SAALPAACKAAGE froom EEMPLLOYEEE因此,我我们需要要继续进进行规范范化的过过程,把把表1-3拆开开,我们们得到:表 1-5和表 1-6这时候如如果 22000003 Kevvin 离开公公司,我我们只需需要从表表 1-5 中中删除他他就可以以了, 存在于于表1-6中的的Sallaryy C信信息并不不会丢失失。但是是我们要要注意到到除了表表 1-5 中中存在 Kevvin 的信息息之外, 表11-4中中也存在在 Keevinn 的信信息, 这很容容易理解解, 因因为 KKeviin 参参与了项项目 11000001, TPPMS, 所以以当然也也要从中中删除。 至此,我我们将表表1-11经过规规范化步步骤,得得到四张张表,满满足了三三范式的的约束要要求,数数据冗余余、更新新异常、插入异异常和删删除异常常。在三范式式之上,还存在在着更为为严格约约束的BBC范式式和四范范式,但但是这两两种形式式在商业业应用中中很少用用到,在在绝大多多数情况况下,三三范式已已经满足足了数据据库表规规范化的的要求,有效地地解决了了数据冗冗余和维维护操作作的异常常问题。(3NFF:在22NF的的基础上上,数据据表中如如果不存存在非关关键字段段对任一一候选字字段的传传递函数数依赖则则符合第第三范式式(也就就是说违违反了数数据冗余余) 帐号 身身份证号号 姓名名 密码码 10011 411010010001 李李梅 11000001 身份证号号和姓名名共同决决定了密密码,姓姓名是依依赖于身身份证号号的,这这样就违违反了第第三范式式).第四范范式(44NF) (1)第第四范式式(4NNF)的的定义 在4.3.55中我们们曾分析析了关系系CTBB虽然属属于BCCNF,但还存存在着数数据冗余余、插入入异常和和删除异异常的弊弊端,究究其原因因就是CCTB中中存在非非平凡的的的多值值依赖,而决定定因素不不是关键键字。因因而必须须将CTTB继续续分解,如果分分解成两两个关系系模式CCTB11(C,T)和和CTBB2(CC,B),则它它们的冗冗余度会会明显下下降。从从多值依依赖的定定义分析析CTBB1和CCTB22,它们们的属性性间各有有一个多多值依赖赖CT,CCB,都是平平凡的多多值依赖赖。因此此,含有有多值依依赖的关关系模式式中,减减少数据据冗余和和操作异异常的常常用方法法是将关关系模式式分解为为仅有平平凡的多多值依赖赖的关系系模式。 定定义4.9 设设有一关关系模式式R(UU),UU是其属属性全集集,X、Y是UU的子集集,D是是R上的的数据依依赖集。如果对对于任一一多值依依赖XY,此多值值依赖是是平凡的的,或者者X包含含了R的的一个候候选关键键字,则则称R是是第四范范式的关关系模式式,记为为R4NFF。由此定义义可知:关系模模式CTTB分解解后产生生的CTTB1(C,TT)和CCTB22(C,B)中中,因为为CT,CCB均均是平凡凡的多值值依赖,所以CCTB11和CTTB2都都是4NNF。经过上面面的分析析可以得得知:一一个BCCNF的的关系模模式不一一定是44NF,而4NNF的关关系模式式必定是是BCNNF的关关系模式式,即44NF是是BCNNF的推推广。(2)44NF的的分解 把一个个关系模模式分解解为4NNF的方方法与分分解为BBCNFF的方法法类似,就是把把一个关关系模式式利用投投影的方方法消去去非平凡凡且非函函数依赖赖的多什什依赖,并具有有无损连连接性。例7设有关关系模式式R(AA,B,C,EE,F,G),数据依依赖集DDAABGGC,BBAC,CG,将分解解为4NNF。解:利用用ABGCC,可将将R分解解为的RR的ABCCG,AAEF。利用BAC分分解得:RABCC,BGG,AEEF。由此得到到的三个个关系模模式(AABC)、(BBG)和和(AEEF)都都属于44NF,但此分分解丢失失了函数数依赖CCG。若若最后一一次分解解利用函函数依赖赖CG来做做,则RRAABC,CG,AEFF,由由此得到到的三个个关系模模式(AABC),(CCG)和和(AEEF)都都是属于于4NFF的关系系模式,且保持持了所有有的数据据依赖。这说明明,4NNF的分分解结果果不是惟惟一的,结果与与选择数数据依赖赖的次序序有关。任何一一个关系系模式都都可无损损分解成成一组等等价的44NF关关系模式式,但这这种分解解不一定定具有依依赖保持持性。数据依赖赖和多值值依赖是是两种最最重要的的数据依依赖。如如果只考考虑函数数依赖,则属于于BCNNF的关关系模式式的规范范化程度度已经是是最高的的了。如如果考虑虑多什依依赖,则则属于44NF的的关系模模式化程程度是最最高的。事实上上,数据据依赖中中除函数数依赖和和多什依依赖之外外,还有有其他数数据依赖赖。函数数依赖是是多值依依赖的一一种特殊殊情况,而多值值依赖实实际上又又是连接接依赖的的一种特特殊情况况。但连接依依赖不像像函数依依赖和多多值依赖赖那样可可由语义义直接导导出,而而是在关关系的连连接运算算时才反反映出来来。存在在连接依依赖的关关系模式式仍可能能遇到数数据冗余余及插入入、修改改、删除除异常的的问题。如果消消除了属属于4NNF的关关系模式式中存在在的连接接依赖,则可以以进一步步达到55NF的的关系模模式

    注意事项

    本文(关于表的规范化.docx)为本站会员(you****now)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开