程序员开发必备经验(2)-数据库的设计:冗余还是拆分

数据库的设计与查询

在设计之初应该要考虑到查询的效率。比如一个表的设计是这样的

id、userId、productId、order_no

查询的时候需要显示userName、productName、orderStatus。

那么以目前这种设置,那么必然要关联user表、product表、order表。

根据阿里巴巴的开发手册:禁止连三张表以上进行查询。抛开规范不说,用表连接查询效率肯定慢。那么怎么办呢?

两种方式:

1、数据冗余

2、拆分联查,在service层进行数据合并(重service、轻DB)

先说说第一种,数据冗余,直接把相关联的数据放在一张表去,这很简单。但是数据冗余的数据怎么维护呢?以上面表的设计为例,添加的时候userName为:凯。当这个用户改了名字,那么这个数据就是脏数据了。所以不能冗余经常更新的数据。

第二种方式,应该比较好的。把连表数据拆分,再从service进行合并。

相关资料:

为什么mysql不建议执行超过3表以上的多表关联查询?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值