1.第一范式:数据库的字段是单一属性,不可再分
不能是复合属性,如果存在,应该拆分为多个属性
不能是多值属性,如果存在,应该建立一个实体,而让此属性与其存在1对多的关系)
不能是重复属性
2.第二范式:任何非关键字段不能部分依赖任一侯选关键字(即必须完全依赖)
表中必须存在侯选关键字,即每一行不同于其他任一行,是惟一区分的
任何非关键字段不能依赖于侯选关键字的一部分
3.第三范式:任何非关键字段不能传递依赖任一侯选关键字
非关键字字段必须直接依赖任一侯选关键字
非关键字段C不能依赖非侯选关键字B,因为样会形成传递依赖:侯选关键字A=>B=>C,因为这时的B往往是外键,即其他表的主键,也就是说表 中不能含有其他表的非主属性
4.BC范式:任何字段都不能传递依赖任一侯选关键字
与第三范式相比,一个是“任何非关键字段不能”,一个是“任何字段不能”,显然更严格了
侯选关键字或其部分字段不能传递依赖其他的侯选关关键字
注释:
侯选关键字 :又叫侯选码,惟一标识一行数据,其真子集不能是侯选关键字,一个表可以存在多个侯选关键字,如用户表的username,userid
主关键字 :又叫主键,主码,被选中的用来区分其它行的侯选关键字,一个表只有一个主关键字
部分依赖 :(A,B)->C,D,如A->C,则C部分依赖A
传递依赖 :A->B->C,则C传递依赖A