数据库设计范式

第一范式(1NF):
      对于表中的每一行,必须且仅仅有唯一的行值.在一行中的每一列仅有唯一的值并且具有原子性. 
    当前的任何关系数据库管理系统(DBMS)中,傻瓜也不可能做出不符合第一范式的数据库,因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此,你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。
第二范式(2NF):
    要求非主键是主键的子集,非主键依赖于主键。主键必须有唯一性的元素,一个主键可以由一个或更多的组成唯一值的列组成。一旦创建,主键无法改变,外键关联一个表的主键。主外键关联意味着一对多的关系
   第二范式主要是处理冗余数据的删除问题。
   注:所有单关键字的数据库表都符合第二范式,因为不可能存在组合关键字。
第三范式(3NF):
      在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式(即:要求非主键列互不依赖)
第四范式(BCNF)
    在第三范式的基础上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合第三范式。(即:禁止主键列和非主键列一对多关系不受约束)
第五范式
   
将表分割成尽可能小的块,为了排除在表中所有的冗余.

原文地址:https://www.cnblogs.com/jony/p/709379.html