设计数据库,其实就是设计多个表。
数据库设计三大规范
每个规范都是用来规定某种结构要求,后一规范都是在前一规范已经满足的情况下"将强和细化要求"
第一规范:原子性
原子性: 存储的数据应该具有"具有不可再分性"。即每一字段中的信息拆开都不能才组成有效数据。
第二规范:唯一性,消除部分依赖
一个表的每一行必须唯一可区分,且非主键字段值必须完全依赖主键字段值。也可说,必须消除在一个表中的非主键字段值仅仅依赖部分主键值的情形。显然这个要求只对有联合主键的表才有能违反情况,而对单字段主键的表是不会出现的。
依赖:如果确定一个表中的某个数据(A),则就可以确定该表中的其他另一个数据(B),则我们说B依赖于A。时间上,一个表只要有主键,其他非主键都是依赖于这个主键的。
部分依赖:如果确定一个表中的某个数据组合(A,B),则就可以确定该表中的其他另一个数据(C),我们说:C依赖(A,B),A,B通常为主键。那么在设计时只让C依赖于A,B中的一个就称为部分依赖。
第三规范:独立性,消除传递依赖
如果一个具有主键的表中非主键字段(B)依赖于另一个非主键字段(A),因为A作为非主键字段,必然是依赖于主键字段,即B->A->主键,形成传递依赖,第三规范就是规定要避免这种依赖形式。
我们通常的做法是将B依赖于A的数据,分离到另一个表中。
总结
通常在开发中,满足这三个规范,只要做到一个表只存一种数据,基本就可以实现,另外,规范不是绝对要求,有时候我们为了数据的使用方便,还会需要故意违反规范。