数据库中范式简介

数据库范式的作用:符合这些范式的数据库设计,它就是一种简洁、高效且结构清晰的数据库设计,同时可以避免数据库的插入、删除和更新异常,可以最大限度的避免数据库的冗余

常见的数据库设计设计包括:
第一范式、第二范式、第三范式
操作异常
插入异常:某实体随另一实体的存在而存在,缺少某个实体时无法表示这个实体。这个表存在插入异常
更新异常:更改表所对应的某个实体实例的单独属性时,需要将多行更新,这个表存在更新异常
删除异常:删除表的某一行来反映某实体实例。失效时导致另一个不同实体实例信息丢失。这个表存在删除异常
数据冗余:
是指相同的数据在多个地方存在,或者说表中的某个列可以由其他列计算得到,这样就说表中存在着数据冗余。
第一范式:
数据库中的所有字段都是单一属性,不可再分的。
这个单一属性是由基本的数据类型所构成的,如整数,浮点娄,字符串等。
第一范式要求数据库中的表都是二维表。
第二范式:
数据库中的表不存在非关键字段对任一候选关键字的部分函数依赖(部分函数依赖是组合关键字中存在某一关键字决定非关键字)
理解:如果表中存在组合关键字,并且存在某一个组合关键字决定非关键字,那么不符合第二范式,也就是:单关键字的表都符合第二范式
不符合第二范式的会出现:插入、删除、更新异常和数据冗余
第三范式(3NF):
是对字段冗余性的约束,数据表中不存在非关键字段对任意候选关键字段的传递函数依赖,即任何字段不能由其他字段派生出来,它要求字段没有冗余。
没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。

BCNF范式:在3范式基础上,如果不存在任何字段对任一候选关键字段的传递函数依赖则符合BC范式。也就是说如果是复合关键字,则复合关键字之间也不能存在函数依赖关系。(就是不能一词多义,本质是同一样东西)

1NF:列不可分就满足1NF了。
2NF:不存在部分依赖,比如 (A,B)C。(消除非主属性对主属性的传递依赖,即完全依赖于主键)
3NF:不存在传递依赖,比如ABC。(在2NF基础上消除了传递依赖)
第一范式: 所有属性都是基本的数类型
第二范式:不存在相互之间的依赖关系
第三范式: 不存在传递关系




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值