1
一个好的网站,要想数据查询达到很好的效果, 数据库 设计是最基础也是最重要的 工作 。数据库设计是要遵循一定规则的,即当数据库设计范式,数据库设计范式包括第一范式、第二范式、第三范式、第四范式、第五范式和第六范式。不过一般数据库只要满足第一、第二和第三范式就足够了。
在创建一个数据库的过程中,范化是将其转化为一些表的过程,这种方法可以使从数据库得到的结果更加明确。这样可能使数据库产生重复数据,从而导致创建多余的表。范化是在识别数据库中的数据元素、关系,以及定义所需的表和各表中的项目这些初始工作之后的一个细化的过程。
第一范式:
在任何一个关系数据库中,第一范式是对关系模式的基本要求,不满足第一范式的数据库就不是关系数据库。
所谓第一范式是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。例如,Create Table person (
name varchar(20),
phone1 varchar(20), --用来存放电话
phone2 varchar(20), --用来存放电话
fd3 int --其他
)。
在这里phone1,phone2违反了第一范式。
简单地说,第一范式就是无重复的列,即在数据表中没有重复的字段
第二范式
第二范式是在第一范式的基础上建立起来的,即满足第二范式必须先满足第一范式。第二范式要求数据库表中的每个实例或行必须可以被惟一地区分.为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一的标识被称为主关键字或主键。
简单地说,第二范式就是不设计没有主键,或没有唯一索引的表。
第三范式
满足第三范式必须先满足第二范式。第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如Create Table person (
id int,
name varchar(20),
phone1 varchar(20), --用来存放电话
phone2 varchar(20), --用来存放电话
dept varchar(2), --部门名称
deptdesc varchar(100), --部门说明
fd3 int --其他
)。
在这里dept和deptdesc违反了第三范式,因为dept和deptdesc的信息是可以细分的。
根据第三范式的原则,上表可分割成如下两个表。
Create Table person (
id int,
name varchar(20),
phone1 varchar(20), --用来存放电话
phone2 varchar(20), --用来存放电话
deptid int, --部门编号
fd3 int --其他
)
Create Table dept (
deptid int,
dept varchar(2), --部门名称
deptdesc varchar(100), --部门说明
)
简单地说,第三范式就是能细分则细分数据表中的每个字段
满足第三范式的数据库设计是结构清淅的,同时可避免数据冗余和操作异常,所以在设计数据库时不妨多用用范式化设计。