数据库三范式
第一范式:原子性
存储的数据应具有“不可再分性”
修改后
第二范式
唯一性(消除非主键依赖联合主键中的部分字段)
主键:
1.设定一个字段为主键:此时,表示一个字段的值就可以明确确定一行数据。
2.设定多个字段为主键:表示只有这多个字段的值都确定后才能确定一行数据。“联合主键”
依赖
如果确定一个表中的某个数据A,则就可以确定该表中的其他另一个数据B,则B依赖于A。
部份依赖
如果确定一个表中的某个数据组合(A,B),则就可以确定该表中的其他另一个数据C,则C依赖于(A,B)。
不良做法
改良后
第三范式
独立性,消除传递依赖(非主键值不依赖于另一个非主键值,都应该依赖于主键)
在一个具有主键的表中,假设主键为A,其必然其他非主键都依赖于该主键,比如:B依赖于A,C依赖于A,D依赖于A。。。。。。
但同时:如果该表中的某个字段B的值一确定,就能够确定另一个字段的值C,则我们称为C依赖于B。
那么,就出现了:
C依赖B,B依赖A——这就是传递依赖。
则消除该传递依赖的的通常做法,就是将C依赖于B的数据,分离到另一个表中。
不良例子
改良后
一个表只存一种类型数据
数据库存储引擎
常用的表的引擎
Myisam :批量插入速度快,不支持事务 锁表
Innodb :批量插入相对较慢,支持事务 锁行