白话数据库三大范式

数据库的三大范式很好记:第一范式:不允许表的字段可拆分;第二范式:完全依赖主键;第三范式:直接依赖主键。但是如何区分这三大范式呢?

第一范式:不允许表的字段可拆分。这是最好区分的,比如一张表里面有个字段叫联系方式,但是里面的内容是电话+邮箱+地址组成的,这个字段可以拆分成电话,邮箱,地址三个字段,所以不符合第一范式。

第二范式:完全依赖主键;第三范式:直接依赖主键这两个是比较容易混乱的,我们怎么区分呢?

第二范式:完全依赖主键;一张教师表里,有一个关联课程id,还有一个课程名称,应该直接冗余课程id与课程名称出另一个表。我的理解是第二范式属于两个或以上字段在一张表里就属于不符合,它是可以冗余成新的一张表

第三范式:直接依赖主键;意思是教师表,就只能有教师这个的信息,没有关系的字段不需要放在这个表里。也就是说只要与表无关的字段,就可以说这个不符合第三范式。

 

清楚了这三个范式,那我们必定要遵守吗?当然理论是理论。比如以下场景,在分布式系统中,有两个服务,一个订单服务,一个产品服务中,这是分为两个数据库的,但是有个系统需要通过产品去查询订单,这时你会选择怎么做呢?

采用跨库跨表搜索?哦不,直接在订单表冗余一个产品名称字段,嗯嗯,真香!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值