首先声明,本文为笔记记录。可能不适合作为博客文章,所以如果看着不舒服,还望“另请高明”,(^__^) 嘻嘻……
数据库设计的时候有三大范式,现简述如下:
第一范式(1NF): 原子性,数据不可再分
原则就是使得表列为原子性,每一个字段内容不能再分解。
第二范式(2NF):唯一性,消除部分依赖
第二范式要求满足如下两个要求,
每一行数据具有唯一性
这一点,只要是有主键就可以实现。因为主键的存在使得每一行数据都具有唯一性。
消除数据之间的部分依赖
依赖的定义:主键确定了其他字段,其他字段依赖于主键而存在。
:
部分依赖: 某个字段值依赖于部分字段,则发生这种现象的前提是该表主键位置拥有多个字段。
:
完全依赖: 某个字段完全依赖与主键的所有字段。当一个表的主键仅有一个字段时,必然是完全依赖。
解决办法:
将部分依赖转换成完全依赖,拆表!
将原来存在部分依赖的表拆分,简单来说就是该表主键有几个字段,就拆成(几个+1)的表,前几个字段将分别作为其所在表的唯一主键,即成为完全依赖模式。最后一个表为之前的那几个字段并存的联合主键。用于维护表与表之间的关系。
第三范式(3NF):独立性,消除传递依赖
也就是说,有些字段的值能够使用现有的表列来计算得出,这样的字段就属于冗余字段,会产生传递依赖现象。
解决办法
将传递依赖部分提取出来,拆表!
将原来的表中存在传递依赖的字段提取出来,新建一个表。该新表的主键即为原表中被依赖的那个字段。此字段在原来的表中将作为外键而存在。