数据库范式设计和反范式设计

1> 库表设计遵从三大范式。

a、数据库设计的第一大范式:数据库表中的所有字段都只具有单一属性;单一属性的列是由基本数据类型所构成的;设计出来的表都是简单的二维表。(一个列存放的信息只是一个属性的信息,不能一个字段存放多个属性的组合信息。即数据库表中的所有字段值都是不可分解的原子值)。

b、数据库设计的第二大范式:确保表中的每列都完全依赖主键。也就是说在一个数据库表中,一个字段必须完全依赖于这个主键,不可以只部分依赖主键。

c、数据库设计的第三大范式:确保每列都和主键列直接相关,而不是间接相关。也就是说一个表里面可以存放其它表的外键,

但不可以存放其它表的其它字段。其它字段与该表主键没有直接关系。

      如果完全遵从数据库的三大范式设计,那么数据库表关系比较清晰,数据种类区分比较明显。对于开发人员来说是十分有利工作的。但是,如果业务复杂的话,对数据库性能是一个极大的挑战。如一个复杂的join sql。如果数据量大。数据数据查询的时候,数据量级别倍增。导致查询缓慢等影响软件的性能。所以设计数据库表的时候要适当的采用反范式设计。否则,以后再怎么优化sql也不一定能提升sql性能。

2>反范式设计。

       不遵从范式设计规则就是反范式设计。在反范式的设计模式,我们可以允许适当的数据的冗余,用这个冗余去取操作数据时间的缩短。本质上就是用空间来换取时间,把数据冗余在多个表中,当查询时可以减少或者是避免表之间的关联。如商品表和分类表。遵从范式设计,则商品信息一个表,分类信息一个表,两个表的一个中间关联表。我们要查询一个商品的分类时,避免不了多表联查的情况。如果适当采用反范式设计,可以在商品表中冗余分类名称时,那么要显示查询这个商品的类型时,直接单表查询解决性能问题。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荆茗Scaler

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值