表数据是根据业务来分,还是根据代码查询方便来分?
1. 问题描述?
最近遇到一个比较纠结的问题,可能也算不上问题,就是心中有些纠结。
我现在所做的游玩安检项目,游客目前来源有以下3种:
1.景区工作人员提前将明天要来的人员录入系统,第二天 游客刷身份证 来安检。
2.游客到了景区,扫二维码申请临时通行证,工作人员审核通过,可以凭二维码安检进去。
3,游客有长期年卡,刷年卡 安检进入景区。
因为需求一开始只有 来源1,所以有一张表A记录 录入的游客信息,一张表C记录安检时间 等信息,C表的link_id 和A表的主键关联。
后来新需求是 来源增加2,3 ,并且系统有单独的操作和查看界面。现在我是 新建表B存来源2的数据,表D来存来源3的数据,因为他们各自有各自的查看和操作页面,理论上这也没啥问题
但是还有一个安检记录页面,需要展示安检记录以及对应来源表字段的一些信息,那么查询时候就
需要
FROM 表C
left join 表A on ‘A.id = C.link_id AND C.ctype = 标志A’
left join 表B on ‘B.id = C.link_id AND C.ctype = 标志B’
left join 表ADon ‘D.id = C.link_id AND C.ctype = 标志D’
这样感觉查询比较麻烦,如果我将三个来源数据存在一张表的话 这部分查询就方便一些,不用关联那么多表,并且目前B,D表和A存在几个相同的字段。
但是如果以后在增加来源4,来源5的话,如果字段差别比较大,放在一张表好像也不好。
各位大佬有啥好的建议,你们觉得放在一个表好 还是分开好?
年卡和临时通行证都有独立属性。临时通行证可能还需要定期删除(可能还需要做数据查询统计),年卡一样。所以分开是有必要的。而且页面也是分属不同的页面,分开逻辑更加清晰。而且很明显,安检记录信息是固定不变的,该表该做冗余就冗余,这样就不需要联表查询了或者不需要联很多张表。