【转】数据库设计三范式理解

数据库设计当中三范式是经常遇到的,如果实际项目数据库设计中能达到第三范式基本也就满足要求了,那么如何快速有效的理解三个范式,同时应用于实际项目中去呢?

首先看看标准定义的三个范式:

第一范式(1NF)

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

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

我的理解:列不可分。

第二范式(2NF)

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一的区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。要求实体的属性完全依赖于主关键字。

我的理解:不能部分依赖。即:一张表存在组合主键时,其他非主键字段不能部分依赖。

第三范式(3NF)

 满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。

我的理解:不能存在传递依赖。即:除主键外,其他字段必须依赖主键。

官方标准的定义,我个人感觉说得非常术语化,比较难以理解消化。我简单的理解为三句话,非常简短,比较好理解。如果各位路过朋友们,有更好理解的总结,请不吝指出!

时间: 2024-09-17 21:09:04

【转】数据库设计三范式理解的相关文章

设计原则范式 之 数据库设计三范式

 设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合.构造数据库必须遵循一定的规则.在关系数据库中,这种规则就是范式.关系数据库中的关系必须满足一定的要求,即满足不同的范式.目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).第四范式(4NF).第五范式(5NF)和第六范式(6NF).满足最低要求的范式是第一范式(1NF).在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推.一般说来,数据库只需满足第三

数据库设计——三范式概念+实战

      在利用三范式设计数据库的时候,以前总以为是先画完ER图,然后导出关系模式,最后用三范式去检验数据库设计的是否合理,but not!我们在一开始画ER图的时候,就应当和三范式联系起来,将错误消灭在源头.为了能最早的检验出错误,我们就要对ER图转换成关系模式的算法和三范式是如何消除冗余,避免冲突有深刻的了解,才能知道如何最早发现错误.      本文主要以机房收费系统数据库设计中的一些东西为例,结合三范式概念,简述下三范式.         一,1NF 定义: 如果关系模式R的每个关系r

mysql监控、性能调优及三范式理解

原文:mysql监控.性能调优及三范式理解 1监控          工具:sp on mysql     sp系列可监控各种数据库   2调优 2.1 DB层操作与调优               2.1.1.开启慢查询                             在My.cnf文件中添加如下内容(如果不知道my.cnf的路径可使用find / -name my.cnf进行查找):                             在mysqld下添加            

数据库设计三大范式

数据库设计范式 什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系.所以建立科学的,规范的的数据库是需要满足一些 规范的来优化数据数据存储方式.在关系型数据库中这些规范就可以称为范式. 什么是三大范式: 第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF.满足第一范式是关系模式规范化的最低要 求,否则,将有很多基本操作在这样的关系模式中实现不了. 第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都

数据库设计二三范式

设计|数据|数据库|数据库设计 1. 为应用在多条记录的字段建立独立的表格2. 通过一个foreign key 来关联这些表格的值 我们将url 的值放在一个独立的表格中,这样我们就可以在以后加入更多的数据,而无需担心产生重复的值.我们还通过主键值来关联这些字段:users userId name company company_address1 Joe ABC 1 Work Lane2 Jill XYZ 1 Job Street urls urlId relUserId url1 1 abc.

数据库设计四五范式

设计|数据|数据库|数据库设计 在定义第四个正规化的形式前,我想首先提一下三种基本的数据关系:一对一,一对多和多对多.我们回头看一下经过第一个正规化的users 表.要是我们将url 的字段放在一个独立的表中,每次在users 表中插入一个记录,我们就会在urls 表中插入一行.我们将得到一个一对一的关系:用户表中的每一行,都将在urls 表中找到相应的一行.对于我们的应用来说,这既不实用也不标准. 然后看看第二个正规化的例子.对于每个用户记录,我们的表格允许有多个urls 的记录与之关联.这是

数据库设计三大范式应用实例剖析

引言 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息. 设计范式是不是很难懂呢?非也,大学教材上给我们一堆数学公式我们当然看不懂,也记不住.所以我们很多人就根本不按照范式来设计数据库. 实质上,设计范式用很形象.很简洁的话语就能说清楚,道明白.本文将对范式进行通俗地说明,并以

数据库设计三大范式简析_MsSql

为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式.       在实际开发中最为常见的设计范式有三个: 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式. 第一范式的合理遵循需要根据系统的实际需求来定.比如某些数据库系统中需要用到"地址"这个属性,本来直接将

数据库设计三大范式简析

为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式.       在实际开发中最为常见的设计范式有三个: 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式. 第一范式的合理遵循需要根据系统的实际需求来定.比如某些数据库系统中需要用到"地址"这个属性,本来直接将