并不是应用的范式越高越好,视实际情况而定。第三范式已经很大程度上减少了数据冗余,并且基本预防了数据插入异常,更新异常,和删除异常了。
列都是基本数据项,不能够再进行分割,否则设计成一对多的实体关系
注:不符合第一范式不能称作关系型数据库
非主属性完全依赖于主关键字,如果不是完全依赖主键(即不全依赖联合主键中的所有关键字),应该拆分成新的实体,设计成一对多的实体关系
要求一个数据库表中不包含已在其它表中已包含的非主关键字信息
注:一般关系型数据库满足第三范式就可以了
BC范式是在第三范式的基础上的一种特殊情况,即每个表中只有一个候选键(在一个数据库中每行的值都不相同,则可称为候选键)
在要求更好的查询效率时,可以不遵循BC范式(多一个候选键,就多一份表,更多可能需要进行联合查询),候选键储存在主表上也是没有问题的,并不会造成数据的冗余,在一定程度上提高查询效率
比如:noNF表中的skill技能这个字段,有的人是“java,mysql”,有的人描述的是“Java,MySQL”,这样数据就不一致了,解决办法就是将多值属性放入一个新表
样数据就不一致了,解决办法就是将多值属性放入一个新表
[外链图片转存中…(img-n7yeQkem-1680516329350)]