系统可通过多途径注册,如手机号码,微信等第三方认证。同一个真实用户有多个账号,如何合并为一个?
2种思路:
方案一:不修改系统其它模块,新增一个账号合并功能。然后对所有关联userid的表进行更新。建要合并的用户id合并为同一个userid。如:userid分别为:1,3,6的3个用户合并为用户id为1的用户。合并功能需要对其它所有关联到用户id的表进行更新,将历史记录中的userid为1,3,6的记录改为1。即丢弃id为3和6的用户,将其数据合并到用户到1用户。
优点:对原业务系统框架基本无改动。业务逻辑相对简单,容易理解。
缺点:
1.需要分析哪些表中的关联的id需要修改,如果表多的话容易漏。
2.每当业务需要扩展功能时,都需要考虑合并用户功能是否要对应修改,将扩展的表中的userid进行合并。
3.如果合并功能出bug,导致数据错乱,问题严重。对合并功能编写需要仔细仔细再仔细。
方案二:查询用户数据时使用 userId in (1,3,6)。
优点:数据较安全。
1.不用修改数据库表的历史数据,主要对所有业务查询sql 进行修改,如userid=3 改为userId in (1,3,6)
2.及时有部分业务逻辑漏改了,也方便测试。即使有bug,也能及时修正。
缺点:如果已有业务模块较多,那么改动工作量较大,容易漏以及出现新的bug。
总结:
关联userid的表较少,系统基本稳定,不会有大量新功能增加建议使用方案一。
新开发系统建议使用方案二,在设计时就考虑有用户合并的情况。用开发规范文档要求业务模块开发。