数据库三范式:
第一范式,(一个表,每一列都是原子性;)
所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项。
比如一张用户表,用户信息,包括了姓名和电话,能够再进行拆分的,就不满足第一范式。
第二范式,(也就是说在表中存在多对多的关系,就不满足第二范式,必须再加一个中间表来区分)
(要求一张表,只描述一件事)
要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性
要求数据库表中的每个实例或记录必须可以被唯一地区分。
比如订单表,既保存了订单信息又保存商品信息,那么就不满足第二范式。
第三范式,是第二范式的子集,第一和第二范式主要区分能不能拆成两张表,
而第三范式要求一个表中不能包含其他表已经包含的非主键信息。
如果能通过其他主键查到,那么就不能继续保存,否则就数据冗余。还可能造成更新丢失异常。
BC范式:一张表中,不能出现两组,两个组合关键字索引。
比如一张商品表包含了供应商名称,商品ID,供应商联系人,商品数量等字段。
那么当供应商刚签合同,还没供应商品数量的时候,就查不到供应商的信息,就会出现插入异常。 而且供应商名称,商品ID 能组合查到唯一,商品ID,供应商联系人也能组合查到唯一,这时候就应该分表。供应商表,和商品表。