数据库中范式简介
2016-11-09 22:50
218 查看
数据库范式的作用:符合这些范式的数据库设计,它就是一种简洁、高效且结构清晰的数据库设计,同时可以避免数据库的插入、删除和更新异常,可以最大限度的避免数据库的冗余
常见的数据库设计设计包括: 第一范式、第二范式、第三范式 操作异常 插入异常:某实体随另一实体的存在而存在,缺少某个实体时无法表示这个实体。这个表存在插入异常 更新异常:更改表所对应的某个实体实例的单独属性时,需要将多行更新,这个表存在更新异常 删除异常:删除表的某一行来反映某实体实例。失效时导致另一个不同实体实例信息丢失。这个表存在删除异常 数据冗余: 是指相同的数据在多个地方存在,或者说表中的某个列可以由其他列计算得到,这样就说表中存在着数据冗余。
第一范式: 数据库中的所有字段都是单一属性,不可再分的。 这个单一属性是由基本的数据类型所构成的,如整数,浮点娄,字符串等。 第一范式要求数据库中的表都是二维表。
第二范式:
数据库中的表不存在非关键字段对任一候选关键字的部分函数依赖(部分函数依赖是组合关键字中存在某一关键字决定非关键字) 理解:如果表中存在组合关键字,并且存在某一个组合关键字决定非关键字,那么不符合第二范式,也就是:单关键字的表都符合第二范式 不符合第二范式的会出现:插入、删除、更新异常和数据冗余
第三范式(3NF):
是对字段冗余性的约束,数据表中不存在非关键字段对任意候选关键字段的传递函数依赖,即任何字段不能由其他字段派生出来,它要求字段没有冗余。 没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。
BCNF范式:在3范式基础上,如果不存在任何字段对任一候选关键字段的传递函数依赖则符合BC范式。也就是说如果是复合关键字,则复合关键字之间也不能存在函数依赖关系。(就是不能一词多义,本质是同一样东西)
1NF:列不可分就满足1NF了。 2NF:不存在部分依赖,比如 (A,B)C。(消除非主属性对主属性的传递依赖,即完全依赖于主键) 3NF:不存在传递依赖,比如ABC。(在2NF基础上消除了传递依赖)
第一范式: 所有属性都是基本的数类型 第二范式:不存在相互之间的依赖关系 第三范式: 不存在传递关系