快速理解数据库三范式

第一范式、字段的原子性,即每个字段都是不可拆分的。

第二范式、非主键列完全依赖于主键

第三范式、不存在传递依赖关系

  譬如有三列:账号(主键)+账户类型(存的是码值)+账户类型描述(中文描述)

    三者具有原子性,且 账户类型 和 账户类型描述 都可以各自依赖于 账号(主键){即从主键就可以查出该账号的账户类型或者账户类型描述},符合1NF以及2NF,但其关系其实是通过传递依赖实现的(账户类型描述----》账户类型----》账号(主键)),不符合3NF。

  应把账户类型描述账户类型存一个表。账号账号类型存一个表。才能满足第三范式

但其实在olap的业务层设计的时候往往会把账号、账户类型、账户类型描述等相关联的数据存储到同一个中间层的表中,以便于减少后面取数过程中的表关联数量,可以提高批处理效率以及降低代码复杂度。

再例如 :

  业务上我有十个相似的sql需要取账号、账号类型和账号类型描述以及其它不同的数据,此时可以直接从业务层/中间层(整合好了账号、账号类型、账号类型描述----不符合第三范式了呀)出,而不需要进行额外的关联。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值