用户注册推荐数据库表设计

一、背景问题

接到新增业务时,一些程序员总是想着往表里简单的增加字段,能实现功能就可以了,然而却没考虑到系统健壮性。如果你有这个习惯,那就来看看下面的例子吧,我将描述一个产品业务的增量迭代过程,你会看到开发先于设计带来的麻烦。

二、业务描述和前提
业务描述
推荐功能v1.1用户注册时填写推荐人的推荐码,后台cms可以进行统计某个客户经理,用户的推荐量,项目投资的推荐量

已建表(只列出业务涉及的字段,其他字段省略):
在这里插入图片描述

三、错误的示范

先来看看懒猿的做法:
呵呵,简单,用户表加个推荐码RefererCode,订单表也加上,后台就可以统计了。
结果,后端的确可以根据推荐码去统计对应推荐人的推荐结果。
若再新增业务:

业务描述
推荐功能v1.2统计所有客户经理,所有用户推荐的数据。

此时想做统计,不知道推荐人是客户还是经理,啊脸长了没对客户和经理做区分,好吧,对用户表和订单表再分别新增字段RefererType。嗯,此时自己感觉有点心累了,但还是忍着。
再增新业务:

业务描述
推荐功能v1.3新增融资推荐,推荐用户去申请融资

已建表:
在这里插入图片描述
继续给项目表添加RefererCode,RefererType字段,很容易呀,后端统计单个用户所有推荐数据时,关联了三个表 -_-|||

SELECT SUM(RCount) FROM(
  SELECT COUNT(0)AS RCount FROM User WHERE RefererCode='xxx'
  UNION 
    SELECT COUNT(0)AS RCount FROM Order WHERE RefererCode='xxx'
    UNION 
      SELECT COUNT(0)AS RCount FROM Project WHERE RefererCode='xxx'
)

再给你新增一个业务:推荐码可以更改。意味着RefererCode会变,估计懒猿会大叫一声“What?”.瞬间就想求产品不要再变动业务了。此时你会被产品翻白眼的。

四、再次重新设计

再回到最初需求初版,一开始就画个DFD(数据流图),就能找出合理的数据结构,使得数据表更健壮,也不容易违反数据库三段式。

注册推荐、投资推荐的DFD图dfd1(融资申请模块省略):
在这里插入图片描述
dfd1拆分出两个子数据流图:
在这里插入图片描述

在这里插入图片描述
最终得到的PDM(物理数据模型)如下图所示。
在这里插入图片描述
五、小结
作数据流图,花去不到一个小时。对不进行作图分析设计的模块功能,维护需要一两天,bug重重,扩展极差。磨刀不误砍柴工,养成软件开发过程中的习惯,才能写出高质量代码,谢谢阅览。

评论 2 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术工厂 设计师:CSDN官方博客 返回首页

打赏作者

杰杰椒

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值