首页 新闻 会员 周边 捐助

积分相关数据库表该如何设计?业务表和积分明细表该如何匹配上

0
悬赏园豆:10 [已解决问题] 解决于 2019-02-28 15:29

我有三个表:积分明细表 P,发布文章表 A,上传图片表 C
现在的需求是:
每发布一篇文章可获取积分,每天上传的第一张图片可获取积分。
需要查积分明细;查发布的该文章获取的积分数,并且可以追加积分;查发布的该图片获取的积分数,并且可以追加积分

我的问题是数据库表应该如何设计:

方案一:
A表和C表存储该条记录获取的积分数,同时在P表也存一笔积分记录,描述用文字注明,不与A表C表相关联
问题:
1,实际业务场景不仅是A表C表两张表和获取积分相关,还有其他很多表,,每张表都加积分字段有点奇怪
2,其实还有获得红包,获得实物的情况,不能都在分表加字段吧
3,如果C表中删除一笔积分明细,找不到对应的表去修改数据。

方案二:
P表加两个字段,类型(积分类型)、来源(存A表名称或存1,2,3对应表名)、来源数据的ID(A表数据ID)。
查询发布的该文章获取的积分数和追加积分时,用枚举类去匹配查询
问题:
1,查询变复杂了
2,来源数据的ID——该字段存储的是不同表的ID,很别扭

想问问大家有什么更好的设计方案吗?如果没有的话,两个方案选择哪个好一点呢?

花生喂龙的主页 花生喂龙 | 初学一级 | 园豆:10
提问于:2019-02-27 18:18
< >
分享
最佳答案
0

建议方案二
1、扩展性好
2、来源数据的ID,不别扭。为了扩展性好,所以可以存储不通表得id.

收获园豆:10
保镖 | 小虾三级 |园豆:759 | 2019-02-28 10:43

谢谢,我也觉得第二种比较好,不过被否了,还是采用了第一种方案。。。

花生喂龙 | 园豆:10 (初学一级) | 2019-02-28 15:30

@花生喂龙: 第一种方案是最原始的方法,从实现当前功能上没毛病
第二种方案,可以实现动态调整那个业务是否有积分。你的想法是对的,查询也不复杂,以后有机会再用。

保镖 | 园豆:759 (小虾三级) | 2019-02-28 15:35

@花生喂龙: 第一种方案,在各业务表都有积分字段,相当于加积分冗余字段,从查询速度讲不需要关联,确实快。每种方案都有优缺点。

保镖 | 园豆:759 (小虾三级) | 2019-02-28 15:38

@保镖: 解释得很明白,谢谢你

花生喂龙 | 园豆:10 (初学一级) | 2019-02-28 15:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册