我有三个表:积分明细表 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,很别扭
想问问大家有什么更好的设计方案吗?如果没有的话,两个方案选择哪个好一点呢?
建议方案二
1、扩展性好
2、来源数据的ID,不别扭。为了扩展性好,所以可以存储不通表得id.
谢谢,我也觉得第二种比较好,不过被否了,还是采用了第一种方案。。。
@花生喂龙: 第一种方案是最原始的方法,从实现当前功能上没毛病
第二种方案,可以实现动态调整那个业务是否有积分。你的想法是对的,查询也不复杂,以后有机会再用。
@花生喂龙: 第一种方案,在各业务表都有积分字段,相当于加积分冗余字段,从查询速度讲不需要关联,确实快。每种方案都有优缺点。
@保镖: 解释得很明白,谢谢你