Mysql三范式

Mysql三范式

第一范式:无重复的列

  • 字段不可再拆分

第二范式:属性完全依赖于主键 [ 消除部分子函数依赖 ]

  • 范式是递增的,要满足第二范式,必须满足第一范式!2NF要求字段对主键没有部分依赖!
1
2
3
4
5
6
7
8
9
 先说部分,有部分说明主键是复合主键。来个彻底的解决办法就是,让主键不是复合主键,即让主键是一个字段!

再说依赖,依赖是通过一个字段能确定另一字段,我们就说被确定的字段对确定它的字段有依赖。比如:知道了“名字”字段,便能确定“性别”字段。我们就说“性别”字段对“名字”字段有依赖。

最后连起来解释部分依赖,记录中某些字段的值只是被复合主键中的某个值确定了,我们就说字段对主键有部分依赖。

做法:只要给表一个“id”字段,并设置自动增长,便可。其实就是取消掉复合主键。通过另一个单一字段的主键来代替。一句话,没有复合主键,就没有部分依赖。
写法为:id int unsigned primary key auto_inrement

第三范式:属性不依赖于其它非主属性 [ 消除传递依赖 ]

  • 满足第二范式,并取消传递依赖。要满足第三范式,不能在一张表上操作了,需要把原表拆分成几个表。当然如果不用拆分了,说明已经满足了。
1
2
3
4
5
6
A->B->C C依赖于B,B依赖于A。这就是传递依赖。

做法:每个实体建立一个表,为每个表建立一个主键id。


总结: 应该说,一条记录里面任何两个数据之间都不能有依赖,除了和主键。主键和任何一个数据之间都存在依赖。

http://blog.csdn.net/w__yi/article/details/19934319