合理设计数据库关系 优化读存速度

2020-09-22 12:10:55
黄豆   UsualTool.com  
原创博文 1306
loading

我们在设计数据库关系时,常常遇到一个问题,发现好多字段是重复的。新手可能就是纯粹的重复,而老手则把这种重复叫冗余。

那么冗余是否是必要呢?我们分为两种情况:

我们设计2张表:会员表--会员ID:会员名,订单表--订单ID:会员ID:(冗余:会员名)

1、如果数据较少,冗余就是一种开发负担,这样会增加开发人员的工作量,如果你更改某个信息时,有心去更改所有与之关联的信息。例如:会员名叫张三,他有几百张订单冗余了会员名张三,那么在修改会员名时,你可能需要去更改几百张订单的会员名,与修改的数据保持统一。

若是数据量较少,或完全没有必要设计会员名为冗余字段,只需要在订单中记录会员ID即可,订单显示会员名时与会员ID进行关联查询即可。

2、如果数据是百万计算,为提高查询速度,冗余或将成为必要的手段,这将大大缩减查询时间。同样查询张三名下订单时,通过会员名即可显示张三所有订单,而不需要使用关联会员ID去查询。


两种查询写法比较:

关联会员ID查询:

select * from 订单表 where 会员ID in (select 会员ID from 会员表 where 会员名='张三')

冗余字段直接查询:

select * from 订单表 where 会员名='张三'

显然,当数据量较少时,关联会员ID查询是最恰当的查询方式,数据量较大时,使用冗余字段查询能节省查询时间,提高查询速度。

两者方式应区别对待,即使设计冗余字段,也应考虑今后扩展,即设计会员名为冗余字段时,仍需要记录会员ID,这将有助于后期扩展。当然冗余字段不宜多,毕竟这才符合数据库开发的规范。

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开微信扫一扫,即可进行扫码打赏哦!

+分享给朋友+
昵称

评论内容

请自觉遵守相关法规,文明评论!
郑重提醒:部分素材来源于互联网,如果侵犯了您的权利,请及时联络我们更正,谢谢合作,电邮:help@usualtool.com