想象一下数据库设置,其中x个客户可以做出y次订单。通常所有客户都会共享一组自动递增的订单ID。我如何为每个客户ID设置单独的订单ID?
- 客户A的第一顺序具有顺序ID#1
- 客户B的第一阶具有订单ID#2。
我想每个客户都有单独的订单ID集。很重要的一点是,客户无法根据ID查看其他客户有多少订单。
- 客户A的第一阶具有顺序ID#1
- 客户A的二阶具有顺序ID#2
- 客户B的第一阶具有顺序ID#1
现在,我可以看到的唯一方法是手动选择客户订单号的最大值,添加+1并手动插入。
select max(customer_order_id) from orders where customer_id = X
如何在数据完整性和规范化的意义上创建这种方法?比如为客户的单个订单ID添加某种自动增量?
create table customers
(
id int auto_increment primary key,
name varchar(255)
);
create table orders
(
id int auto_increment primary key,
customer_id int
customer_order_id int
foo varchar
bar varchar
);
是的,非常感谢您的回复。我仍然有一个问题:我如何正确增加每个客户的单独序列,而不选择max()并在php中添加+1,然后插入它? – user1201008 2012-02-10 01:16:40
您可以跟踪客户记录中的“最后订单顺序”,但我认为选择max并添加一个更好。 – 2012-02-10 01:30:02
好的,谢谢! – user1201008 2012-02-10 01:55:41