码迷,mamicode.com
首页 > 数据库 > 详细

数据库(数据表)的设计思想介绍(数据库重点)

时间:2016-06-16 13:23:24      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:

设计数据库,其实就是设计表(多个表)

数据库设计3范式(3NF):

范式,就是规范,就是指设计数据库需要(应该)遵循的原则。

每个范式,都是用来规定某种结构或数据要求——后一范式都是在前一范式已经满足的情况用来加强要求

第一范式(1NF),原子性

原子性:

存储的数据应该具有不可再分性

不良做法示例:技术分享

可见,其违反了原则性范式:学生字段的数据存储了多个可分的数据。

修改后为:技术分享

第二范式(2NF)唯一性

需要实现每一行数据具有唯一可区分的特性,并不能有部分依赖关系

通常,给一个表加主键(也是推荐做法),就可以做到唯一可区分

但主键有这样情况:

设定一个字段为主键:此时,表示该一个字段的值就可以明确确定一行数据。

设定多个字段为主键:表示只有这多个字段的值都确定后才能确定一行数据。此时也称为联合主键

什么叫依赖:

如果确定一个表中的某个数据(A),则就可以确定该表中的其他另一个数据(B),则我们说:B依赖于A

实际上,一个表只要有主键,则其他非主键一定是依赖于主键的。

 

什么叫部分依赖

如果确定一个表中的某个数据组合(AB),则就可以确定该表中的其他另一个数据(C),则我们说:C依赖于(AB)(此时AB通常就是做出主键)。

但:如果某个数据D,它只依赖于数据A,或者说,A一确定,则D也可以确定,此时我们就称为数据D部分依赖于数据A——可见部分依赖是指某个非主键字段,依赖于联合主键字段的其中部分字段

 

不良做法:技术分享

改良之后:技术分享

 

 

第三范式(3NF):独立性,消除传递依赖

在一个具有主键的表中,假设主键为A,其必然其他非主键都依赖于该主键,比如:B依赖于AC依赖于AD依赖于A。。。。。。

但同时:如果该表中的某个字段B的值一确定,就能够确定另一个字段的值C,则我们称为C依赖于B

那么,就出现了:

C依赖BB依赖A——这就是传递依赖。

则消除该传递依赖的的通常做法,就是将C依赖于B的数据,分离到另一个表中。

 

不良例子:技术分享

改良之后:技术分享

最后的总结

通常,在实践中,满足3范式只要做到一个表只存一种数据”基本就可以实现。

另外,范式不是绝对要求,有时候我们为了数据的使用方便,还会(需要)故意违反范式

数据库(数据表)的设计思想介绍(数据库重点)

标签:

原文地址:http://www.cnblogs.com/shiyou00/p/5590613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!