1.问题描述

因为是多端开发,然后最开始的数据库大部分已经设计好了,是另一个人设计的,大体都没问题,开发起来也就加一加字段,可是后面我发现数据库存在一个很严重的设计失误,那就是把用户表给分开了,有一个商家表,一个用户表,一开始我觉得也没问题,毕竟是多平台多端开发。但是后面在编写一些模块的时候我发现这样的话我userid每次都要去两张表找人确定身份,因为有些业务是商家才有的有些的用户才有的,甚至我同一个业务可能都要查两张表。

比如我有一个二手平台,那我用户表的id和商品表的id互相都要写进对方表里做记录,比如张三用户买了李四商家的商品。那我shop表中记录买家是张三,卖家是李四。我查询我的订单列表的时候我传我的userid进去查询看似很合理,但是你会发现此时的userid已经不是唯一标识了,因为我买家不一定都是用户,可能是商家,如果刚好两条数据的买家id一样都是1,你怎么就知道这个buyid的1是从用户表id1来的,还是商家表id来的,当你写了很多业务,你再想改就爆炸了,根本不好修改

2.补救方法

如果说后端关于记录用户信息的地方已经很多了,就别想着数据库两表合一了,这时候我们直接用雪花算法来保证id唯一不会重复

雪花算法(几种常见的雪花算法生成ID方案简单介绍:Hutool、百度Uid-Generator、美团Leaf、Yitter)-CSDN博客

3.总结反思

以后像这种用户表只设计一张表就好了,用一个type字段来区分身份(管理员?商家?用户),后续权限处理也用这个type来分权限