您的位置:首页 > 数据库

数据库设计的三大范式

2014-07-03 10:08 253 查看
数据库的三大范式是为了减少数据库数据的冗余,让数据库设计更合理话,而且三大范式是递增式的,只有满足第一范式的情况下,才能考虑第二范式,在满足第三范式的前提下,才能考虑第三范式。但是有时候为了提高数据的查询效率,很多数据库设计只满足了第二范式。

实际上还有第四,第五范式等。

现在就让我们来看看三大范式。

第一范式:

每列数据都是不可分割的最小数据(原子性)

idaddress
1中国上海
2中国深圳
像上面这表就没有满足第一范式 应该做如下修改

idcountrycity
1中国上海
2中国深圳
第二范式:

必须满足第一范式,每张表只描述一件事情(每个表只能依赖一个主键)

是不是感觉看了有点迷糊,没关系,我们看看例子

订单编号1
产品编号A1
订购日期2004/4/1
产品单价29¥
这张表是错误的,产品单价是依赖于产品编号的,订购日期的话是依赖于订单编号的,这就不满足了依赖一个主键的含义。

所以应该改成

订单编号1
订购日期2004/4/1
and

产品编号A1
产品单价29¥
两张分出来的表

第三范式:

第三范式又是满足第二范式的基础上,要求是一个表中不能包含其他列中定义的非主键列

比如说

订单编号1
订购日期2004/4/1
顾客id3
顾客姓名张三
这表就错了,顾客姓名肯定是顾客表里面的非主键列

当然也为了提高查询效率也可以忽略第三范式,经常查询这张表,又要做到顾客姓名的情况下,

就可以忽略第三范式。毕竟如果满足第三范式,你每次查询顾客姓名还得关联顾客表。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: