数据库的范式总结(待续)

关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。

数据库的设计范式是数据库设计所需要满足的规范。

只有理解数据库的设计范式,才能设计出高效率、优雅的数据库,否则可能会设计出错误的数据库.

目前,主要有六种范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。

满足最低要求的叫第一范式,简称1NF。在第一范式基础上进一步满足一些要求的为第二范式,简称2NF。其余依此类推。

范式可以避免数据冗余,减少数据库的空间,减轻维护数据完整性的麻烦,但是操作困难,因为需要联系多个表才能得到所需要数据,而且范式越高性能就会越差。

要权衡是否使用更高范式是比较麻烦的,一般在项目中,用得最多的也就是第三范式,我认为使用到第三范式也就足够了,性能好而且方便管理数据。

函数依赖,如果一个表中某一个字段Y的值是由另外一个字段或一组字段X的值来确定的,就称为Y函数依赖于X。

第一范式(1NF)

定义:如果关系模式R的每个关系r的属性都是不可分的数据项,那么就称R是第一范式的模式。

简单的说,每一个属性都是原子项,不可分割。

1NF是关系模式应具备的最起码的条件,如果数据库设计不能满足第一范式,就不称为关系型数据库。关系数据库设计研究的关系规范化是在1NF之上进行的。

例如(学生信息表):

学生编号 姓名 性别 联系方式

20080901 张三 男 email:zs@126.com,phone:88886666

20080902 李四 女 email:ls@126.com,phone:66668888

以上的表就不符合,第一范式:联系方式字段可以再分,所以变更为正确的是:

学生编号 姓名 性别 电子邮件 电话

20080901 张三 男 zs@126.com 88886666

20080902 李四 女 ls@126.com 66668888

第二范式(2NF)

定义:如果关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么就称R是第二范式。

简单的说,第二范式要满足以下的条件:首先要满足第一范式,其次每个非主属性要完全函数依赖与候选键,或者是主键。也就是说,每个非主属性是由整个主键函数决定的,而不能由主键的一部分来决定。

例如(学生选课表):

学生 课程 教师 教师职称 教材 教室 上课时间

李四 Spring 张老师 java讲师 《Spring深入浅出》 301 08:00

张三 Struts 杨老师 java讲师 《Struts in Action》 302 13:30

这里通过(学生,课程)可以确定教师、教师职称,教材,教室和上课时间,所以可以把(学生,课程)作为主键。但是,教材并不完全依赖于(学生,课程),只拿出课程就可以确定教材,因为一个课程,一定指定了某个教材。这就叫不完全依赖,或者部分依赖。出现这种情况,就不满足第二范式。

修改后,选课表:

学生 课程 教师 教师职称 教室 上课时间

李四 Spring 张老师 java讲师 301 08:00

张三 Struts 杨老师 java讲师 302 13:30

课程表:

课程 教材 

Spring 《Spring深入浅出》 

Struts 《Struts in Action》

所以,第二范式可以说是消除部分依赖。第二范式可以减少插入异常,删除异常和修改异常。

时间: 2024-10-30 12:24:10

数据库的范式总结(待续)的相关文章

数据库设计范式深入浅出

关系数据库设计之时是要遵守一定的规则的.尤其是数据库设计范式 现简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介绍. 在你设计数据库之时,若能符合这几个范式,你就是数据库设计的高手. 第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值 都是不可再分的最小数据单位,则称R是第一范式的关系.例:如职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话 和一个家里电话号码) 规范成为1NF有三种方法: 一是重复存

数据库设计范式(实例)

设计|数据|数据库|数据库设计 关系数据库设计之时是要遵守一定的规则的.尤其是数据库设计范式 现简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介绍. 在你设计数据库之时,若能符合这几个范式,你就是数据库设计的高手. 第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值 都是不可再分的最小数据单位,则称R是第一范式的关系.例:如职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话 和一个家里电话号码) 规范成

数据库设计范式

设计|数据|数据库|数据库设计 关系数据库设计之时是要遵守一定的规则的.尤其是数据库设计范式 现简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介绍. 在你设计数据库之时,若能符合这几个范式,你就是数据库设计的高手. 第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值 都是不可再分的最小数据单位,则称R是第一范式的关系.例:如职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话 和一个家里电话号码) 规范成

我对关系型数据库设计范式的理解

我对关系型数据库设计范式的理解 所谓范式,是关系型数据库关系模式规范化的标准,从规范化的宽松到严格,分别为不同的范式,通常使用的有第一范式.第二范式.第三范式及BC范式等.范式是建立在函数依赖基础上的. 函数依赖 定义:设有关系模式R(U),X和Y是属性集U的子集,函数依赖是形为X→Y的一个命题,对任意R中两个元组t和s,都有t[X]=s[X]蕴t[Y]=s[Y],那么FD X→Y在关系模式R(U)中成立.X→Y读作'X函数决定Y',或'Y函数依赖于X'. 通俗的讲,如果一个表中某一个字段Y的值

数据库中的标准算子和子图匹配和数据库的范式

问题描述 数据库中的标准算子和子图匹配和数据库的范式 数据库中的标准算子和子图匹配和数据库的范式有什么的关系?有没有例子可以解释下呢? 解决方案 http://wenku.baidu.com/link?url=6c6ZMMj79supNy54jzwUzUfDJWDHCFeedV9sw8PacFy77ZFlVnClcuYiOEHVyRM9MejNCzWin_8HwwbgB2eUJh1u9pmNKpyfZ9SoD1dkWnS 解决方案二: 数据库范式数据库范式

数据库设计范式(转)

关系数据库设计之时是要遵守一定的规则的.尤其是数据库设计范式 现简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介绍. 在你设计数据库之时,若能符合这几个范式,你就是数据库设计的高手 关系数据库设计之时是要遵守一定的规则的.尤其是数据库设计范式 现简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介绍. 在你设计数据库之时,若能符合这几个范式,你就是数据库设计的高手. 第一范

数据库三大范式

数据库三大范式 第一范式(1NF) 在任何一个关系型数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式的数据库不是关系数据库. 那么何为第一范式呢? 第一范式就是指数据表中的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性. 如果出现重复的属性,就可能需要定义一个新的实体,新的实体有重复的属性构成,新实体与原实体之间为一对多的关系.简而言之,第一范式就是无重复的列. 第二范式(2NF) 第二范式是在第一范式的基础上建立起来的

数据库的范式和反范式设计

范式与反范式 1.1  范式 当设计关系型数据库时,需要遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式(Normal Form),越高的范式数据库冗余越小.应用数据库范式可以带来许多好处,但是最主要的目的是为了消除重复数据,减少数据冗余,让数据库内的数据更好的组织,让磁盘空间得到更有效的利用.范式的缺点:范式使查询变的相当复杂,在查询时需要更多的连接,一些复合索引的列由于范式化的需要被分割到不同的表中,导致索引策略不佳. 1.1.1  什么是第一.二.三.BC范

数据库设计范式1——三范式

一讲到数据库设计,大家很容易想到的就是三范式,但是第四.第五范式又是什么,不是很清楚,三范式到底怎么区分,也不清楚,作为数据库设计的基础概念,我再讲解下数据库范式. Normal form Brief definition 1NF First normal form Table faithfully represents a relation, primarily meaning it has at least one candidate key 2NF Second normal form N