数据库优化-1

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), --部门说明
)
简单地说,第三范式就是能细分则细分数据表中的每个字段

满足第三范式的数据库设计是结构清淅的,同时可避免数据冗余和操作异常,所以在设计数据库时不妨多用用范式化设计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值