2

我想知道设计订单管理系统数据库的最佳实践。我有一个订单表和订购表。 我目前的设计如下。订单管理数据库设计

 
    Order table 

    orderid  int primary key 
    totalprice int 
    orderstatus int 

    Order Items table 

    orderitemid int primary key 
    orderid  int foreign key 
    productid  int 
    quantity  int 

orderid是这里的外键。 在订单商品表中订购多个订购商品。 它是一对多的关系。

这是设计的表是最好的方法还是应该是使用下面的设计

 
    Order table 

    id   int  primary key 
    orderid  int 
    orderitemid int  foreign key 
    totalprice int 
    orderstatus int 

    Order Items table 

    orderitemid int  primary key 
    productid  int 
    quantity  int 

请描述在使用这两种设计的优点和缺点。 也让我知道,如果一些其他更好的设计是可能的。

+1

第二个设计显然是错误的,因为它只允许订单最多只有一个*项目。 – user2864740

+0

请给我一个很好的选择。 – Shanky

+0

@ user2864740,情况并非如此。 orderid不是主键。 – Mau

回答

2

选项1是唯一合理的选择

由于1 Order有很多Order Items,在orderIdOrders并多次在Order Items举行一次。

使用选项2,这种关系是可能的,但是您会不必要地复制数据,因为您无法对Order中的一个记录拥有多个OrderItemId值。

这是基本的标准化。

+0

你可以建议有很好的选择吗? – Shanky

+0

@Shanky选项1 – Tanner

+0

有什么问题没有错,但我想知道是否有更好的方法可用 – Shanky