关于表的规范化_第1页
关于表的规范化_第2页
关于表的规范化_第3页
关于表的规范化_第4页
关于表的规范化_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、规范化:满足第一范式是表的最低要求,不满足第一范式要求的数据库(表)就不能称之为关系数据库。在此基础上满足更高要求的称为第二范式,简记为2NF,其余依此类推,还有第三范式(3NF)、BC范式(BCNF)、第四范式(4NF)、第五范式(5NF)。BCNF可以看作是修正了的第三范式。把表从低范式,通过投影运算转换成若干高一级范式的过程,叫做表的规范化。一般地说,表表满足的的范式级级别越高高,设计计的表越越是规范范,表的的质量越越高,数数据的冗冗余度越越小,共共享性越越高,所所占的存存储空间间越少,并并将数据据的不一一致性减减少到最最低程度度,这也也是对表表进行规规范化的的目的。但是,高范式的数据库

2、查询起来比较复杂。所以,不应一味追求高范式,一般满足第三范式或BC范式就可以了二、表的规规范化1、第一范范式(11NF)如前所述,第第一范式式要求表表的每一一个字段段都是不不可再分分的最小小单位。例1:学生生(学号号,姓名名,学院院,地址址,选修修课程成成绩(课课程号,课课程名,成成绩)表表数据如如下:学号姓名学院地址选修课程成成绩(课课程号,课课程名,成成绩)9901张丽管理管201C001,高高等数学学,9009901张丽管理管201C002,英英语,8809901张丽管理管201C003,计计算机,669902李锋电子电101C004,法法律,778表一 不满满足第一一范式的的表显然,这

3、样样的表是是不满足足第一范范式的。因因为选修课课程成绩绩字段还还可分为为3个字段段即(课课程号,课课程名,成成绩)。如果不把它它进行规规范化,即即转换成成满足第第一范式式的表,将将会产生生很多问问题,如如:删除除异常,即即本来只只想删除除成绩的的,不得得不把课课程号和和课程名名也删除除了!转换的方法法就是把把可以拆拆分的字字段进行行拆分,即即把选修课课程成绩绩分解成成3个字段段:课程号号,课程名名,成绩。变成成下面满满足第一一范式的的表:学号姓名学院地址课程号课程名成绩9901张丽管理管201C001高等数学909901张丽管理管201C002英语809901张丽管理管201C003计算机66

4、9902李锋电子电101C004法律78表二 满满足第一一范式的的表2、第二范范式(22NF)一个关系应应满足11NF是是最起码码的条件件。但是是,仅满满足1NNF的关关系还可可能存在在一些问问题。例2:表二二中存在在以下的的问题: 问问题1:数据据冗余度度大。张张丽选几几门课程程,都必必须输入入所有几几个她的的相关信信息,同同时,如如果有几几千个人人选修高高等数学学课,就就得输入入几千个个“高等数数学”。如果果要修改改“高等数数学”这个课课程名称称,对于于几千个个课程名名中,只只要漏改改一个,将将造成数数据的不不一致性性。 问问题2:删除除异常。我我们知道道,这个个表中的的关键字字为学号号和

5、课程程号,它它们不能能为空值值,而当当李锋退退学时,不不可能只只删除李李锋的学学号和姓姓名,只只能删除除了李锋锋的整条条记录,这这时相应应的课程程号为CC0044的法律律也被删删除,如如果这个个表中只只有李锋锋一人选选法律课课,该记记录删除除后,下下次将无无法查询询法律课课的课程程号。 问问题3:插入入记录异异常。与与删除异异常相似似,如果果李锋刚刚入学,还还没有选选修任何何一门课课程,无无法知道道他选修修的课程程号,而而课程号号为关键键字,不不能为空空,因此此,李锋锋这个记记录也不不能输入入。造成出现这这些问题题的原因因是因为为这个表表不满足足第二范范式。 如如何判断断一个表表是否满满足第二

6、二范式呢呢,判断断方法是是:(1)、找找出表的的关键字字。(2)、如如果只有有一个关关键字,若若每一个个非关键键字都依依赖于这这个关键键字,则则表满足足第二范范式,否否则不是是。什么是依赖赖(关系系)呢?例:某某表中有有两个字字段:学学号、姓姓名,对对于每一一个学号号,只有有一个姓姓名与之之对应,则则称姓名名依赖于于学号,或或称学号号唯一确确定姓名名,记作作:学号号姓名。例3:学生生(学号号,姓名名,学院院)表是是否满足足第二范范式?答:满足。因因为,这这个表中中只有一一个关键键字即学学号,而而其他字字段(即即非关键键字)都都依赖于于学号,也也就是说说每一个个学号只只有一个个姓名,一一个学院院

7、与之对对应。例4:学生生(学号号,姓名名,学院院,成绩绩)表是是否满足足第二范范式?答:不满足足。因为为,一个个学生可可能不只只选一门门课程,不不止一个个成绩,也也就是说说每一个个学号不不只有一一个成绩绩与之对对应,或或者说,有有一个非非关键字字段(即即成绩)不不依赖于于学号。(3)、如如果有两两个或两两个以上上的关键键字,那那么,把把这些关关键字看看成是一一个组合合关键字字,若每每一个非非关键字字都能完完全依赖赖于组合合关键字字,则表表满足第第二范式式,否则则不是。例5:成绩绩(学号号,课程程,成绩绩)表是是否满足足第二范范式?满足。因为为,非关关键字(成成绩)完完全依赖赖于组合合关键字字(

8、学号号+课程),即即只有一一个成绩绩与(学学号+课程)对对应,或或者说,一一个学生生选修一一门课程程,就只只能有一一个成绩绩。称为部分依依赖。 定定义:如如果一个个表满足足1NFF,且每每一个非非关键字字都完全全依赖于于关键字字,则这这个表满满足第二二范式。 第第一范式式转换成成第二范范式的方方法:找出依赖关关系,将将能完全全依赖于于主键的的字段从从表中提提取出来来,同主主键一起起组成一一个新的的关系。 例7:表二(学号,姓姓名,学学院,地地址,课课程号,课课程名,成成绩)的的依赖关关系如下下:显然然,不满满足2NNF。院、地址)绩绩)转换的过程程就是拆拆分的过过程,也也是一个个消除部部分依赖

9、赖的过程程。但是是,要注注意,拆拆分的结结果应该该包含原原表的所所有字段段!(即即无损分分解)3、第三范范式(33NF)通过分析,发发现表AA仍然在在一定程程度上存存在上面面提及的的三个问问题,要要消除和和减少它它们,还还得把它它分解成成满足更更高范式式(即33NF)的的表. 满满足第三三范式的的判断方方法:判断表在满满足第二二范式的的基础上上是否有有传递依依赖的情情况,如如果有,不不是第三三范式,否否则是。 将将非第三三范式规规范为第第三范式式的方法法:把产生传递递依赖关关系的非非关键字字段抽出出来,同同关键字字一起建建立新的的表。例8:表AA(学号号,姓名名,学院院,地址址)中,存存在地址

10、址传递依依赖于学学号的关关系,即即:学号学院院,学院院地址。把地址从原原表中分分出来,同同关键字字一起建建立新的的表形成成表A11(学院、地地址),原表就就可消除除了传递递依赖关关系。表表A分解为为:表A1 (学院、地地址) 表表A2(学号、姓姓名、学学院) 小小结:表表的规范范化中,11NF是是要满足足每个字字段都是是不可再再分的;2NFF是在11NF的的基础上上消除部部分依赖赖关系(只只保留完完全依赖赖),33NF是是在2NNF的基基础上进进一步消消除传递递依赖关关系。二:在设计和操操作维护护数据库库时,关关键的步步骤就是是要确保保数据正正确地分分布到数数据库的的表中。使使用正确确的数据据

11、结构,不不仅便于于对数据据库进行行相应的的存取操操作,而而且可以以极大地地简化应应用程序序的其他他内容(查查询、窗窗体、报报表、代代码等)。正正确进行行表设计计的正式式名称就就是数数据库规规范化。数据冗余数据应该尽尽可能少少地冗余余,这意意味着重重复数据据应该减减少到最最少。比比如说,一一个部门门雇员的的电话不不应该被被存储在在不同的的表中, 因为这这里的电电话号码码是雇员员的一个个属性。如如果存在在过多的的冗余数数据,这这就意味味着要占占用了更更多的物物理空间间,同时时也对数数据的维维护和一一致性检检查带来来了问题题,当这这个员工工的电话话号码变变化时,冗冗余数据据会导致致对多个个表的更更新

12、动作作,如果果有一个个表不幸幸被忽略略了,那那么就可可能导致致数据的的不一致致性。规范化实例例为了说明方方便,我我们在本本文中将将使用一一个SAAMPLLE数据据表,来来一步一一步分析析规范化化的过程程。首先,我们们先来生生成一个个的最初初始的表表。CREATTE TTABLLE SAMMPLEE ( PRJJNUMM IINTEEGERR NOOT NNULLL, PRJJNAMME VARRCHAAR(2200), EMYYNUMM IINTEEGERR NOOT NNULLL, EMYYNAMME VARRCHAAR(2200), SALLCATTEGOORY CHHAR(1), SAL

13、LPACCKAGGE INTTEGEER) INN UUSERRSPAACE11;ALTERR TAABLEE SSAMPPLE ADD PRIIMARRY KKEY(PPRJNNUM, EMYYNUMM);Inserrt iintoo SAAMPLLE(PPRJNNUM, PRRJNAAME, EMMYNUUM, EMYYNAMME, SALLCATTEGOORY, SAALPAACKAAGE)valuees(11000001, TTPMSS, 20000011, Johhnsoon, AA, 20000), (11000001, TTPMSS, 20000022,Chriistiine,

14、B, 30000), (10000011, TPMMS, 20000003, Keevinn, C, 440000), (10000002,TCT, 22000001, JJohnnsonn, A, 220000), (10000002, TCCT, 20000004, Appplee, B,3000);表1-1考察表1-1,我我们可以以看到,这这张表一一共有六六个字段段,分析析每个字字段都有有重复的的值出现现,也就就是说,存存在数据据冗余问问题。这这将潜在在地造成成数据操操作(比比如删除除、更新新等操作作)时的的异常情情况,因因此,需需要进行行规范化化。第一范式参照范式的的定义,考考察上表表

15、,我们们发现,这这张表已已经满足足了第一一范式的的要求。(1NF:字段具有原子性,不可再分; 比如说籍贯贯这个字字段,里里面是“湖湖北武汉汉”的话话,它就就违反了了原子性性,因为为湖北武武汉还可可以再分分的更具具体,分分为“湖湖北”和和“武汉汉” )1、因为这这张表中中字段都都是单一一属性的的,不可可再分;2、而且每每一行的的记录都都是没有有重复的的;3、存在主主属性,而而且所有有的属性性都是依依赖于主主属性;4、所有的的主属性性都已经经定义事实上在当当前所有有的关系系数据库库管理系系统(DDBMSS)中,都都已经在在建表的的时候强强制满足足第一范范式。因因此,这这张SAAMPLLE表已已经是

16、一一张满足足第一范范式要求求的表。考考察表11-1,我我们首先先要找出出主键。可可以看到到,属性性对是主主键,其其他所有有的属性性都依赖赖于该主主键。从一范式转转化到二二范式根据第二范范式的定定义,转转化为二二范式就就是消除除部分依依赖。(2NFF:组合合关键字字的表,不不存在组组合关键键字中的的任意字字段决定定其它非非关键字字段(也也就是说说不能有有两个组组合键组组成一个个主键)考察表1-1,我我们可以以发现,非非主属性性部部分依赖赖于主键键中的; 非非主属性性,和都都部分依依赖于主主键中的的;表1-1的的形式,存存在着以以下潜在在问题:1 数据据冗余:每一个个字段都都有值重重复;2 更新新

17、异常:比如字段段的值,比比如对值值TPPMS了修改改,那么么就要一一次更新新该字段段的多个个值;3 插入入异常:如果新新建了一一个Prrojeect,名名字为TTPT, 但是是还没有有Empployyee加加入,那那么将会空空缺,而而该字段段是主键键的一部部分,因因此将无无法插入入记录;Inserrt iintoo SAAMPLLE(PPRJNNUM, PRRJNAAME, EMMYNUUM, EMYYNAMME, SALLCATTEGOORY, SAALPAACKAAGE) vaaluees(11000003, TTPT, NNULLL, NNULLL, NNULLL, NNULLL)4 删

18、除除异常:如果一一个员工工 20000003, Kevvin 离职了了,要将将该员工工的记录录从表中中删除,而而此时相相关的SSalaary信信息 CC 也将将丢失, 因为为再没有有别的行行纪录下下 Saalarry CC的信息息。Delette ffromm saamplle wwherre EEMYNNUM = 22000003SSeleect disstinnct SALLCATTEGOORY, SAALPAACKAAGE froom SSAMPPLE因此,我们们需要将将存在部部分依赖赖关系的的主属性性和非主主属性从从满足第第一范式式的表中中分离出出来,形形成一张张新的表表,而新新表和旧

19、旧表之间间是一对对多的关关系。由由此,我我们得到到:CREATTE TTABLLE PROOJECCT ( PRJJNUMM IINTEEGERR NOOT NNULLL, PRJJNAMME VARRCHAAR(2200) INN UUSERRSPAACE11;ALTERR TAABLEE PPROJJECTT ADD PRIIMARRY KKEY(PPRJNNUM);Inserrt iintoo PRROJEECT(PRJJNUMM, PPRJNNAMEE) vvaluues(10000011, TPMMS), (10000022, TCTT);表1-2表表 1-3EMYNUUMEMYNA

20、AMESALCAATEGGORYYSALPAACKAAGE2000001Johnsson A 2200002000003Kevinn CC 4400002000004Applee B 330000CREATTE TTABLLE EMPPLOYYEE ( EMYYNUMM IINTEEGERR NOOT NNULLL, EMYYNAMME VARRCHAAR(2200), SALCCATEEGORRY CHAAR(11), SALPPACKKAGEE IINTEEGERR) INN UUSERRSPAACE11;ALTERR TAABLEE EMMPLOOYEEEADD PRIIMARRY KK

21、EY(EMMYNUUM);Inserrt iintoo EMMPLOOYEEE(EMMYNUUM, EMYYNAMME, SALLCATTEGOORY, SAALPAACKAAGE) vaaluees(22000001,Johnnsonn, A, 220000), (20000002, Chhrisstinne, BB, 30000), (22000003, KKeviin, CC,4000), (20000044, Appple, B, 30000);CREATTE TTABLLE PRJJ_EMMY ( PRJJNUMM IINTEEGERR NOOT NNULLL, EMYYNUMM I

22、INTEEGERR NOOT NNULLL) INN UUSERRSPAACE11;ALTERR TAABLEE PPRJ_EMYY ADD PRIIMARRY KKEY(PPRJNNUM, EMYYNUMM);Inserrt iintoo PRRJ_EEMY(PRJJNUMM, EEMYNNUM) vaaluees(11000001, 20000001), (11000001, 20000002),(1000001, 20000003), (11000002, 20000001), (11000002, 20000004);同时,我们们把表11-1的的主键,也也就是表表1-22和表11-3的

23、的各自的的主键提提取出来来,单独独形成一一张表,来来表明表表1-22和表11-3之之间的关关联关系系:表 1-44这时候我们们仔细观观察一下下表1-2, 1-33, 11-4, 我们们发现插插入异常常已经不不存在了了,当我我们引入入一个新新的项目目 TPPT 的的时候,我我们只需需要向表表1-22 中插插入一条条数据就就可以了了, 当当有新人人加入项项目 TTPT 的时候候,我们们需要向向表1-3, 1-44 中各各插入一一条数据据就可以以了。虽虽然我们们解决了了一个大大问题,但但是仔细细观察我我们还是是发现有有问题存存在。从二范式转转化到三三范式考察表前面面生成的的三张表表,我们们发现,表表

24、1-33存在传传递依赖赖关系,即即:关键键字段 - 非非关键字字段 -非关键键字段。而而这是不不满足三三范式的的规则的的,存在在以下的的不足:1、 数据据冗余:和和的值值有重复复;2、 更新新异常:有重复复的冗余余信息,修修改时需需要同时时修改多多条记录录,否则则会出现现数据不不一致的的情况;3、 删除除异常:同样的的,如果果员工 20000033 Keevinn 离开开了公司司,会直直接导致致 Saalarry CC 的信信息的丢丢失。Delette ffromm EMMPLOOYEEE whheree EMMYNUUM = 20000003Seelecct ddisttincct SSAL

25、CCATEEGORRY, SALLPACCKAGGE ffromm EMMPLOOYEEE因此,我们们需要继继续进行行规范化化的过程程,把表表1-33拆开,我我们得到到:表 1-55和表 1-66这时候如果果 20000003 KKeviin 离离开公司司,我们们只需要要从表 1-55 中删删除他就就可以了了, 存存在于表表1-66中的SSalaary C信息息并不会会丢失。但但是我们们要注意意到除了了表 11-5 中存在在 Keevinn 的信信息之外外, 表表1-44中也存存在 KKeviin 的的信息, 这很容容易理解解, 因因为 KKeviin 参参与了项项目 11000001, TP

26、MMS, 所以当当然也要要从中删删除。 至此,我们们将表11-1经经过规范范化步骤骤,得到到四张表表,满足足了三范范式的约约束要求求,数据据冗余、更更新异常常、插入入异常和和删除异异常。在三范式之之上,还还存在着着更为严严格约束束的BCC范式和和四范式式,但是是这两种种形式在在商业应应用中很很少用到到,在绝绝大多数数情况下下,三范范式已经经满足了了数据库库表规范范化的要要求,有有效地解解决了数数据冗余余和维护护操作的的异常问问题。(3NF:在2NNF的基基础上,数数据表中中如果不不存在非非关键字字段对任任一候选选字段的的传递函函数依赖赖则符合合第三范范式(也也就是说说违反了了数据冗冗余) 帐号

27、 身份份证号 姓名 密码 1001 410010110011 李梅梅 10000001 身份证号和和姓名共共同决定定了密码码,姓名名是依赖赖于身份份证号的的,这样样就违反反了第三三范式).第四范式式(4NNF)(1)第四四范式(4NFF)的定定义 在4.33.5中中我们曾曾分析了了关系CCTB虽虽然属于于BCNNF,但但还存在在着数据据冗余、插插入异常常和删除除异常的的弊端,究究其原因因就是CCTB中中存在非非平凡的的的多值值依赖,而而决定因因素不是是关键字字。因而而必须将将CTBB继续分分解,如如果分解解成两个个关系模模式CTTB1(C,TT)和CCTB22(C,BB),则则它们的的冗余度度

28、会明显显下降。从从多值依依赖的定定义分析析CTBB1和CCTB22,它们们的属性性间各有有一个多多值依赖赖CT,CCB,都都是平凡凡的多值值依赖。因因此,含含有多值值依赖的的关系模模式中,减减少数据据冗余和和操作异异常的常常用方法法是将关关系模式式分解为为仅有平平凡的多多值依赖赖的关系系模式。 定义义4.99 设有有一关系系模式RR(U),U是是其属性性全集,XX、Y是是U的子子集,DD是R上上的数据据依赖集集。如果果对于任任一多值值依赖XXY,此此多值依依赖是平平凡的,或或者X包包含了RR的一个个候选关关键字,则则称R是是第四范范式的关关系模式式,记为为R4NFF。由此定义可可知:关关系模式式CTBB分解后后产生的的CTBB1(CC,T)和CTTB2(C,BB)中,因因为CT,CCB均均是平凡凡的多值值依赖,所所以CTTB1和和CTBB2都是是4NFF。经过上面的的分析可可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论