搜尋

首頁  >  問答  >  主體

在数据库中怎么做到所有用户共用一张表,但是每个用户的订单编号却是独立的命名空间?

1.实际场景:
数据库中订单表是公用的,所有用户在一张订单表上。
怎么让每个用户的订单编号是独立的命名空间?比如用户A下了两张订单,他的订单编号应该是C001、C002,用户B下了三张订单,他的编号起始位置应该还是C001,而不是C003,他的所有订单编号应该是C001,C002,C003。
请问怎么做到这一点?
难道要在每个用户底下存一个他当前开了多少个订单的字段,然后每次先读出来,加一,再存回去?这不太好吧……有没有更好的方法,在数据库端就做了?好像听人说起过用数据库函数或者触发器?

2.如果数据库能做到上述这一点,请问这个C001一般是存在主键字段里么?还是主键依然是一个数字类型的递增主键,只是在表中增加一个字段去存这个C001?

注:是在Mysql数据库中。


阿神阿神2942 天前2021

全部回覆(2)我來回復

  • 汪汪

    汪汪2016-11-09 17:33:37

    楼主的意思应该是建立不同客户账户的统一订单管理库,不同账户只能看到属于自己的订单,有点类似云erp。

    订单表可以冗余一个主键id,在数据存储唯一性上面,可以看为订单code+用户id来唯一确认一条数据。

    如果说需要表结构优化设计的话,可以根据每个用户自动建立一张订单表,将每个用户的订单数据独立出来,表名类似order_userid 每次根据用户找到对应表名取数据,但在最后的综合后台对所有用户订单数据统计可能会稍微麻烦些。


    回覆
    0
  • 学习ing

    学习ing2016-11-09 17:33:18

    1:数据库中不用那样存,你只需要遍历出来所有定单之后,显示时按顺序就行了。
    2:给每个用户属性中增加静态成员变量,并且数据库中相应增加字段,每次加入的数据就是你说的样子了。

    回覆
    0
  • 取消回覆