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