首页 >Java >java教程 >什么是数据库三范式?

什么是数据库三范式?

PHP中文网
PHP中文网原创
2017-06-20 15:34:152422浏览

数据库三范式理解

第一范式(1NF):所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

理解注释:列不可分,或者理解为原子性。

<span style="font-size: 15px;"><strong>第二范式(2NF):</strong>在理解第二范式(2NF)之前首先了解什么是<strong>组合主键</strong>,当一个字段无法确定唯一性的时候,需要其他字段来一起形成唯一性。就是说用来组成唯一性的字段如果有多个就是组合主键。<br>如<br>学生成绩(学号,课程号,成绩)<br>那学号和课程号就可以做为联合主键。<br>因为学号和课程号决定了成绩。也就是说。你要知道成绩,你就要知道学号,知道学号,但还不能知道某一科的成绩。还要知道课程号。<br></span><span style="font-size: 15px;">第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一的区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识即主键。要求实体的属性完全依赖于主键关键字。第二范式主要是为了防止以下情况的发生,一张表存在组合主键时,其他非主键字段不能部分依赖。如:<br></span><span style="font-size: 15px;">学生成绩(学号,课程号,课程名称,课程成绩)<br></span><span style="font-size: 15px;">课程成绩由主组合主键学号和课程号决定,但是课程名称只由课程号可以决定,所以违反了第二范式。<br></span><span style="font-size: 15px;">理解注释:<strong>不能部分依赖。</strong></span>
<span style="font-size: 15px;"><strong>第三范式(3NF):</strong>满足第三范式(3NF)必须先满足第二范式(2NF)。第三范式(3NF)要求一个数据库表中除主键外,其他字段必须依赖主键。在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。如:<br></span><span style="font-size: 15px;">学生表(学号,学生姓名,学院,学院电话)<br></span><span style="font-size: 15px;">学院电话依赖学院,学院依赖学生信息,所以学院电话和学生信息之间存在传递依赖。所以不满足第三范式。<br></span><span style="font-size: 15px;">理解注释:不能存在传递依赖。即:除主键外,其他字段必须依赖主键。</span>
附加:
对于是否建中间表的问题。
如果两张表之间关系为多对多的关系,则需要建中间表。如果两张表之间的关系为多对一或者一对多的关系,则通过主外键连接就行,不需要建立中间表。

以上是什么是数据库三范式?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn