
数据库设计范式access教程.docx
7页数据库设计范式access教程 关系数据库设计之时是要遵守必须的规那么的尤其是数据库设计范式 现简洁介绍1NF〔第一范式〕,2NF〔其次范式〕,3NF〔第三范式〕和BCNF,另有第四范式和第五范式留到以后再介绍 在你设计数据库之时,假设能符合这几个范式,你就是数据库设计的高手 第一范式〔1NF〕:在关系模式R中的每一个详细关系r中,假如每个属性值 都是不行再分的最小数据单位,那么称R是第一范式的关系例:如职工号,姓名,号码组成一个表〔一个人可能有一个办公室 和一个家里号码〕 标准成为1NF有三种方法: 一是重复存储职工号和姓名这样,关键字只能是号码二是职工号为关键字,号码分为单位和住宅两个属性三是职工号为关键字,但强制每条记录只能有一个号码以上三个方法,第一种方法最不行取,按实际状况选取后两种状况 其次范式〔2NF〕:假如关系模式R〔U,F〕中的全部非主属性都完全依靠于随意一个候选关键字,那么称关系R 是属于其次范式的 例:选课关系 SCI〔SNO,CNO,GRADE,CREDIT〕其中SNO为学号, CNO为课程号,GRADEGE 为成果,CREDIT 为学分。
由以上条件,关键字为组合关键字〔SNO,CNO〕在应用中运用以上关系模式有以下问题:a.数据冗余,假设同一门课由40个学生选修,学分就 重复40次b.更新异样,假设调整了某课程的学分,相应的元组CREDIT值都要更新,有可能会出现同一门课学分不同c.插入异样,如打算开新课,由于没人选修,没有学号关键字,只能等有人选修才能把课程和学分存入d.删除异样,假设学生已经结业,从当前数据库删除选修记录某些门课程新生尚未选修,那么此门课程及学分记录无法保存缘由:非关键字属性CREDIT仅函数依靠于CNO,也就是CREDIT局部依靠组合关键字〔SNO,CNO〕而不是完全依靠解决方法:分成两个关系模式 SC1〔SNO,CNO,GRADE〕,C2〔CNO,CREDIT〕新关系包括两个关系模式,它们之间通过SC1中的外关键字CNO相联系,须要时再进展自然联接,复原了原来的关系 第三范式〔3NF〕:假如关系模式R〔U,F〕中的全部非主属性对任何候选关键字都不存在传递信任,那么称关系R是属于第三范式的 例:如S1〔SNO,SNAME,DNO,DNAME,LOCATION〕 各属性分别代表学号,姓名,所在系,系名称,系地址。
关键字SNO确定各个属性由于是单个关键字,没有局部依靠的问题,确定是2NF但这关系确定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的状况缘由:关系中存在传递依靠造成的即SNO - DNO 而DNO - SNO却不存在,DNO - LOCATION, 因此关键辽 SNO 对 LOCATION 函数确定是通过传递依靠 SNO - LOCATION 实现的也就是说,SNO不干脆确定非主属性LOCATION解决目地:每个关系模式中不能留有传递依靠解决方法:分为两个关系 S〔SNO,SNAME,DNO〕,D〔DNO,DNAME,LOCATION〕留意:关系S中不能没有外关键字DNO否那么两个关系之间失去联系 BCNF:假如关系模式R〔U,F〕的全部属性〔包括主属性和非主属性〕都不传递依靠于R的任何候选关键字,那么称关系R是属于BCNF的或是关系模式R,假如每个确定因素都包含关键字〔而不是被关键字所包含〕,那么RCNF的关系模式 例:配件管理关系模式 WPE〔WNO,PNO,ENO,QNT〕分别表仓库号,配件号,职工号,数量。
有以下条件a.一个仓库有多个职工b.一个职工仅在一个仓库工作c.每个仓库里一种型号的配件由专人负责,但一个人可以管理几种配件d.同一种型号的配件可以分放在几个仓库中分析:由以上得 PNO 不能确定QNT,由组合属性〔WNO,PNO〕来确定,存在函数依靠〔WNO,PNO〕 - ENO由于每个仓库里的一种配件由专人负责,而一个人可以管理几种配件,所以有组合属性〔WNO,PNO〕才能确定负责人,有〔WNO,PNO〕- ENO因为 一个职工仅在一个仓库工作,有ENO - WNO由于每个仓库里的一种配件由专人负责,而一个职工仅在一个仓库工作,有 〔ENO,PNO〕- QNT找一下候选关键字,因为〔WNO,PNO〕 - QNT,〔WNO,PNO〕- ENO ,因此 〔WNO,PNO〕可以确定整个元组,是一个候选关键字依据ENO-WNO,〔ENO,PNO〕-QNT,故〔ENO,PNO〕也能确定整个元组,为另一个候选关键字属性ENO,WNO,PNO 均为主属性,只有一个非主属性QNT它对任何一个候选关键字都是完全函数依靠的,并且是干脆依靠,所以该关系模式是3NF分析一下主属性因为ENO-WNO,主属性ENO是WNO的确定因素,但是它本身不是关键字,只是组合关键字的一局部。
这就造成主属性WNO对另外一个候选关键字〔ENO,PNO〕的部 分依靠,因为〔ENO,PNO〕- ENO但反过来不成立,而P-WNO,故〔ENO,PNO〕- WNO 也是传递依靠虽然没有非主属性对候选关键辽的传递依靠,但存在主属性对候选关键字的传递依靠,同样也会带来麻烦如一个新职工安排到仓库工作,但短暂处于实习阶段,没有独立负责对某些配件的管理任务由于缺少关键字的一局部PNO而无法插入到该关系中去又如某个人改成不管配件了去负责平安,那么在删除配件的同时该职工也会被删除解决方法:分成管理EP〔ENO,PNO,QNT〕,关键字是〔ENO,PNO〕工作EW〔ENO,WNO〕其关键字是ENO缺点:分解后函数依靠的保持性较差如此例中,由于分解,函数依靠〔WNO,PNO〕- ENO 丧失了, 因而对原来的语义有所破坏没有表达出每个仓库里一种部件由专人负责有可能出现 一部件由两个人或两个以上的人来同时管理因此,分解之后的关系模式降低了局部完整性约束 一个关系分解成多个关系,要使得分解有意义,至少的要求是分解后不丧失原来的信息这些信息不仅包括数据本身,而且包括由函数依靠所表示的数据之间的相互制约。
进展分解的目标是到达更高一级的标准化程度,但是分解的同时必需考虑两个问题:无损联接性和保持函数依靠有时往往不行能做到既有无损联接性,又完全保持函数依靠须要依据须要进展权衡 1NF直到BCNF的四种范式之间有如下关系: BCNF包含了3NF包含2NF包含1NF 小结: 目地:标准化目的是使构造更合理,消退存储异样,使数据冗余尽量小,便于插入、删除和更新原那么:遵从概念单一化 "一事一地"原那么,即一个关系模式描述一个实体或实体间的一种联系标准的实质就是概念的单一化方法:将关系模式投影分解成两个或两个以上的关系模式要求:分解后的关系模式集合应当与原关系模式"等价",即经过自然联接可以复原原关系而不丧失信息,并保持属性间合理的联系 留意:一个关系模式结这分解可以得到不同关系模式集合,也就是说分解方法不是唯一的最小冗余的要求必需以分解后的数据库能够表达原来数据库全部信息为前提来实现其根本目标是节约存储空间,幸免数据不相同性,提高对关系的操作效率,同时满意应用需求事实上,并不必须要求全部模式都到达BCNF不行有时存心保存局部冗余可能更便利数据查询尤其对于那些更新频度不高,查询频度极高的数据库系统更是如此。
在关系数据库中,除了函数依靠之外还有多值依靠,联接依靠的问题,从而提出了第四范式,第五范式等更高一级的标准化要求在此,以后再谈 各位挚友,你看过后有何感想,其实,任何一本数据库根底理论的书都会讲这些东西,考虑到许多网友是半途出家,来做数据库特找一本书大抄特抄一把,各位有什么问题,也别问我了,自已去找一本关系数据库理论的书去看吧,说不定,对各位大有协助说是说以上是根底理论的东西,请大家想想,你在做数据库设计的时候有没有考虑过遵过以上几个范式呢,有没有在数据库设计做得不好之时,想一想,比照以上所讲,究竟是违反了第几个范式呢? 我见过的数据库设计,很少有人做到很符合以上几个范式的,一般说来,第一范式大家都可以遵守,完全遵守其次第三范式的人很少了,遵守的人必须就是设计数据库的高手了,BCNF的范式出现时机较少,而且会破坏完整性,你可以在做设计之时不考虑它,当然在ORACLE中可通过触发器解决其缺点以后我们共同做设计之时,也盼望大家遵守以上几个范式 第7页 共7页第 7 页 共 7 页第 7 页 共 7 页第 7 页 共 7 页第 7 页 共 7 页第 7 页 共 7 页第 7 页 共 7 页第 7 页 共 7 页第 7 页 共 7 页第 7 页 共 7 页第 7 页 共 7 页。
