问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

第三范式到底是什么意思?

发布网友 发布时间:2022-04-27 00:12

我来回答

2个回答

热心网友 时间:2022-04-29 23:19

第三范式(Third Normal Form,3rd NF)就是指表中的所有数据元素不但要能唯一地被主关键字所标识,而且它们之间还必须相互独立,不存在其他的函数关系。也就是说,对于一个满足2nd NF 的数据结构来说,表中有可能存在某些数据元素依赖于其他非关键字数据元素的现象,必须消除。

扩展资料

构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。

满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

在创建一个数据库的过程中,范化是将其转化为一些表的过程,这种方法可以使从数据库得到的结果更加明确。这样可能使数据库产生重复数据,从而导致创建多余的表。范化是在识别数据库中的数据元素、关系,以及定义所需的表和各表中的项目这些初始工作之后的一个细化的过程。

参考资料来源:百度百科-第三范式

参考资料来源:百度百科-第一范式

热心网友 时间:2022-04-30 00:37

XZC.Log

BlogJava 首页 新随笔 联系 聚合 管理
随笔-222 评论-130 文章-0 trackbacks-0
数据库设计准则(第一、第二、第三范式说明)
I、关系数据库设计范式介绍1.1 第一范式(1NF)无重复的列

所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。

说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

1.2 第二范式(2NF)属性完全依赖于主键[消除部分子函数依赖]

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。例如员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是惟一的,因此每个员工可以被惟一区分。这个惟一属性列被称为主关键字或主键、主码。
第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是属性完全依赖于主键。

1.3 第三范式(3NF)属性不依赖于其它非主属性[消除传递依赖]

满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。

II、范式应用实例剖析
下面以一个学校的学生系统为例分析说明,这几个范式的应用。首先第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。在当前的任何关系数据库管理系统(DBMS)中,傻瓜也不可能做出不符合第一范式的数据库,因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此,你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。
首先我们确定一下要设计的内容包括那些。学号、学生姓名、年龄、性别、课程、课程学分、系别、学科成绩,系办地址、系办电话等信息。为了简单我们暂时只考虑这些字段信息。我们对于这些信息,说关心的问题有如下几个方面。

学生有那些基本信息
学生选了那些课,成绩是什么
每个课的学分是多少
学生属于那个系,系的基本信息是什么。

2.1 第二范式(2NF)实例分析

首先我们考虑,把所有这些信息放到一个表中(学号,学生姓名、年龄、性别、课程、课程学分、系别、学科成绩,系办地址、系办电话)下面存在如下的依赖关系。
(学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话)
(课程名称) → (学分)
(学号,课程)→ (学科成绩)
2.1.1 问题分析

因此不满足第二范式的要求,会产生如下问题

数据冗余: 同一门课程由n个学生选修,"学分"就重复n-1次;同一个学生选修了m门课程,姓名和年龄就重复了m-1次。

更新异常:
1)若调整了某门课程的学分,数据表中所有行的"学分"值都要更新,否则会出现同一门课程学分不同的情况。
2)假设要开设一门新的课程,暂时还没有人选修。这样,由于还没有"学号"关键字,课程名称和学分也无法记录入数据库。

删除异常 : 假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是,与此同时,课程名称和学分信息也被删除了。很显然,这也会导致插入异常。
2.1.2 解决方案

把选课关系表SelectCourse改为如下三个表:
学生:Student(学号,姓名, 年龄,性别,系别,系办地址、系办电话);
课程:Course(课程名称, 学分);
选课关系:SelectCourse(学号, 课程名称, 成绩)。
2.2 第三范式(3NF)实例分析

接着看上面的学生表Student(学号,姓名, 年龄,性别,系别,系办地址、系办电话),关键字为单一关键字"学号",因为存在如下决定关系:

(学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话)
但是还存在下面的决定关系
(学号) → (所在学院)→(学院地点, 学院电话)
即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖。
它也会存在数据冗余、更新异常、插入异常和删除异常的情况。 (数据的更新,删除异常这里就不分析了,可以参照2.1.1进行分析)

根据第三范式把学生关系表分为如下两个表就可以满足第三范式了:

学生:(学号, 姓名, 年龄, 性别,系别);
系别:(系别, 系办地址、系办电话)。

总结

上面的数据库表就是符合I,II,III范式的,消除了数据冗余、更新异常、插入异常和删除异常。

posted on 2009-01-04 11:53 xzc 阅读(14249) 评论(15) 编辑 收藏 所属分类: Oracle

评论:
# re: 数据库设计准则(第一、第二、第三范式说明) 2009-04-28 20:59 | 炅霂

讲的还不错,值得初学者学习…… 回复 更多评论

# re: 数据库设计准则(第一、第二、第三范式说明) 2009-05-07 15:20 | helloqidi

非常不错的讲解,学习了,谢谢啦! 回复 更多评论

# re: 数据库设计准则(第一、第二、第三范式说明) 2009-05-17 10:22 | syd

讲的的确不错,很适合我们这些正在对范式迷茫的人看啊,顶啦!!!!! 回复 更多评论

# re: 数据库设计准则(第一、第二、第三范式说明)[未登录] 2009-06-11 13:27 | maggie

thanks
回复 更多评论

# re: 数据库设计准则(第一、第二、第三范式说明) 2009-06-15 14:57 | 老实人

感谢楼主的详细介绍三范式,感谢! 回复 更多评论

# re: 数据库设计准则(第一、第二、第三范式说明) 2009-09-11 10:42 | Xkive

(学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话)
但是还存在下面的决定关系
(学号) → (所在学院)→(学院地点, 学院电话)
即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖。

--------这个...."所在学院,学院地点, 学院电话"哪儿来的呢?应该是"系别,系办地址、系办电话"吧??把偶看得郁闷了好一阵....................... 回复 更多评论

# re: 数据库设计准则(第一、第二、第三范式说明) 2010-03-18 16:45 | #

谢谢啦!你是我启蒙,你是我灵光,你是我的东风 回复 更多评论

# re: 数据库设计准则(第一、第二、第三范式说明) 2010-03-23 16:17 | ldhfssq

thx~ 回复 更多评论

# re: 数据库设计准则(第一、第二、第三范式说明) 2010-03-30 00:41 | de

接着忽悠~ 回复 更多评论

# re: 数据库设计准则(第一、第二、第三范式说明) 2010-07-19 17:52 | 士大夫

抄的吧?????怎么例子和解说都对不上啊 ?@Xkive
回复 更多评论

# re: 数据库设计准则(第一、第二、第三范式说明) 2011-04-13 17:33 | 11

讲的太好了,通俗化 回复 更多评论

# re: 数据库设计准则(第一、第二、第三范式说明) 2011-09-21 12:41 | 七木

第一范式要求不能有重复的值。要求属性不能有多个值和重复。例子中学生表的系别属性不就重复了吗?
第二范式完全依赖于主键。对于关系表SelectCourse(学号, 课程名称, 成绩),主键是什么呢?三列都有可能重复。
刚开始接触数据库设计,菜鸟问题希望作者大人能解答,谢谢 回复 更多评论

# re: 数据库设计准则(第一、第二、第三范式说明) 2011-10-07 10:31 | 12

第一范式:所有属性都保持原子性,即:每个属性不能包含子属性,如出生日期日期属性:年、月、日。可以将三个属性(年、月、日)都作为表的一个属性,满足第一范式,若该表包含出生日期属性,而出生日期属性又包含年、月、日三属性,同时出现在一个表中,则不满足第一范式。
第二范式:是满足第一范式的基础上的。每个表都有一个主键,该主键可能包含几个主属性,如作者的student表(学号,学生姓名、年龄、性别、课程、课程学分、系别、学科成绩,系办地址、系办电话)中的主键为(学号,课程,系别)。第二范式要求所有非主属性对主键的完全依赖。对主键的完全依赖就是指不存在某一个属性既依赖于主键,同时来依赖于主键中的某一个或几个主属性。student表中的课程->课程学分,系别->系办地址,都是对主键的部分依赖,所以不满足第二范式。
第三范式和作者解释的一样。 回复 更多评论
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? re是平舌音,还是翘舌音 家长嘱托语大全 家长对孩子的嘱托语 re是整体认读音节吗 reply 的用法? “re”是整体认读音节吗? re啥意思?? "Re:"是什么意思 AQL中AC/RE是什么 品检里的Ac和RE什么意思 AQL抽样标准里面的AC和RE分别代表什么? 英语re是什么教材 华为音箱怎么控制灯 2020华为最新款音响使用方法 微信支付结算信息审核不通过 MT5 EA里面返回 Autotrading disabled by server 是什么原因 天味食品中报业绩?天味食品股价为啥低?天味食品还要跌多少? 深圳30元重疾险保障范围包括腰椎手术吗? 为什么你应该使用EA进行外汇交易 想用EA交易mt5或者mt4平台的黄金或者外汇,有没有哪个平台可以交易0.01手的? 家长寄语都写什么? 家长寄语怎样写 家长嘱托怎么写 新中国的招商和洋务运动的招商有什么不同 生日祝福语微信 家长寄语说说 新中国的招商和洋务的招商有什么区别 中国招商银行是干嘛用的 请问“中国招商引资研究院”是国家单位么? 祝二姐的生日祝福语 中国招商银行服务特点 中国招商银行有多少职工 新中国的招商与洋务运动的招商区别 中国招商引资促进会是个什么组织 设计概算中包含哪些内容? 建设项目总概算书的总概算表的项目由什么组成 设计概算包含哪些内容 工程设计概算的定义是什么? 什么是设计概算 我国对外贸易特点是什么?