数据库范式详解_第1页
数据库范式详解_第2页
数据库范式详解_第3页
数据库范式详解_第4页
数据库范式详解_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上第一范式(1NF):定义:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。列1唯一确定列2, 列3, 列4, .,即列2, 列3, 列4, .不能再分裂出其它列。(简易理解:表中的每列的属性不可再分,每一列(每个字段)必须是不可拆分的最小单元)举例说明:学号(主键)姓名性别就读信息张三男大一,计算机科学与技术李四男大二,网络工程王舞女大三,软件工程上表中,可以看到(就读信息)这一列,其实可以分解为年级和专业,也因为(就读信息)这一属性可以再分,故不满足第一范式 修改:学号(主键)姓名性别年级专业张三男大一计算机科学与技术李四

2、男大二网络工程王舞女大三软件工程这样将(就读信息)拆分为(年级)、(专业)两个属性,便满足了第一范式(1NF) 第二范式(2NF):定义:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。满足2NF的前提是必须满足1NF。此外,关系模式需要包含两部分内容,一是必须有一个(及以上)主键;二是没有包含在主键中的列必须全部依赖于全部主键,而不能只依赖于主键的一部分而不依赖全部主键。简易理解:满足1NF后,要求表中的所有列,都必须依赖于所有主键,而不能有任何一列与任一主键没有关系。 举例说明:学号(主键)课程(主键)教师姓名成绩学生姓名

3、专业C语言程序设计老张80张三计算机科学与技术JAVA程序设计老李87李四网络工程数据结构老王90王舞软件工程上表中,可以看到(教师姓名、成绩)两个属性都依赖于(学号)和(课程),但是(学生姓名、专业)这一属性却只依赖于(学号),不依赖于(课程),即:只需要知道(学号)便可得知(学生姓名、专业)。所以,导致非主属性(学生姓名、专业)不完全依赖于主键(学号、课程),故不符合第二范式。修改:将原表拆分为两张表,即可实现让它的非主属性都完全依赖于主键,即可符合第二范式(2NF)学号(主键)课程(主键)教师姓名成绩C语言程序设计老张80JAVA程序设计老李87数据结构老王90(成绩)和(教师姓名)两个

4、非主属性都依赖于主键(学号、课程)学号(主键)学生姓名专业张三计算机科学与技术李四网络工程王舞软件工程(专业)和(学生姓名)两个非主属性都依赖于主键(学号)第三范式(3NF):定义:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF。满足3NF的前提是必须满足2NF。另外关系模式的非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列m既依赖于全部主键,又依赖于非主键列n的情况。简单理解:必须先满足第二范式(2NF),要求表中的每一列只与主键直接相关而不是间接相关,列与列之间无关联(表中的每一列只能依赖

5、于主键)。举例说明:学号(主键)姓名性别年级专业班主任姓名班主任性别班主任年龄张三男大一计算机科学与技术老张男33李四男大二网络工程老李男34王舞女大三软件工程老王男35上表中,表中的非主属性都依赖于(学号),满足了第二范式。但是,(班主任性别、年龄)这两个属性是直接依赖于(班主任姓名)这一属性的,与(学号)属于间接依赖。这就导致了表中的非主属性存在着依赖关系,不符合第三范式。修改:学号(主键)姓名性别年级专业张三男大一计算机科学与技术李四男大二网络工程王舞女大三软件工程班主任姓名(主键)班主任性别班主任年龄老张男33老李男34老王男35将原表拆分为两张表:学生表与班主任表,在满足第二范式的同

6、时,表中的非主属性都不存在着依赖关系,故符合第三范式BCNF:定义:如果关系模式R2NF,且每个非主属性都不传递函数依赖于R的主关系键,则称R属于第三范式,简称3NF。1. 所有非主属性对每一个码都是完全函数依赖;2. 所有的主属性对每一个不包含它的码,也是完全函数依赖;3. 没有任何属性完全函数依赖于非码的任何一组属性。若一个关系达到了第三范式,并且它只有一个候选码,或者它的每个候选码都是单属性,则该关系自然达到BC范式。举例:例一:学生(S)课程号(J)名次(P)张三2李四1王舞3关系模式SJP(S,J,P)中,S是学生,J表示课程,P表示名次,每一个学生选修每门课程的成绩都会有一定的名次

7、,每门课程中每一个名次只有一个学生(即没有并列名次)。函数依赖(S,J)决定P,(J,P)决定S;所以(S,J)与(J,P)都可以作为候选码,这两个码由两个主属性组成,不存在非主属性,显然没有非主属性对码的传递和部分函数依赖,所以SJP属于第三范式;而且满足上面1,2,3三条,所以SJP属于BCNF; 例二:某公司有若干个仓库;每个仓库只能有一名管理员,一名管理员只能在一个仓库中工作;一个仓库中可以存放多种物品,一种物品也可以存放在不同的仓库中。每种物品在每个仓库中都有对应的数量。已知函数依赖集:仓库名 管理员,管理员 仓库名,(仓库名,物品名) 数量码:(管理员,物品名),(仓库名,物品名)

8、主属性:仓库名、管理员、物品名非主属性:数量由于在主属性中,仓库号能够推出管理员。管理员能够推出仓库号。他们之间存在传递依赖。这是不符合bcnf的。修改:把表格拆分,得到例如以下结果:表一(仓库号。管理员);表二(管理员,货物,数量)仓库号管理员上海仓张三上海仓张三北京仓李四北京仓李四管理员物排名数量张三iPhone 5s30张三iPad Air40李四iPhone 5s50李四iPad Mini60第四范式(4NF):定义:关系模式R属于1NF,对于R中的每一个非平凡多值依赖XY(X不包含Y),X都含有码,则R属于4NF。根据4NF的定义可知,4NF所允许的非平凡的多值依赖实际上就是函数依赖

9、,4NF就是消除表中的非平凡多值依赖关系(要求把同一表内的多对多关系消除)。举例:课程学生爱好JAVA1VBJAVA1C#JAVA1BSJAVA2VBJAVA2C#JAVA2BS一个表中存在三个数据:“课程、学生、先修课”。假设2017级的计算机专业学生想要学习JAVA课程,那么他们需要先学习VB、C#、BS三门课,才可以选择进行JAVA课程。存在关系:课程学生 课程先修课两个均是1:N的关系,当出现在一张表的时候,会出现大量的冗余。所以就我们需要分解它,减少冗余。第五范式(5NF):定义:在满足第四范式(4NF)的基础上,消除不是由候选码所蕴含的连接依赖。如果关系模式R中的每一个连接依赖均由R的候选码所隐含,则称此关系模式符合第五范式。它的原则是: 原来的表格必须可以通过由它分离出去的表格重新构建第五范式是在第四范式的基础上做的进一步规范化。第四范式处理的是相互独立的多值情况,而第五范式则处理相互依赖的多值情况。举例:销售人员

温馨提示

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

评论

0/150

提交评论