订单管理的数据库设计

时间:2014-03-12 08:50:48

标签: sql-server database database-design relational-database database-normalization

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

   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 个答案:

答案 0 :(得分:2)

选项1是唯一合理的选择

由于1 Order有多个Order ItemsorderIdOrders中保留一次,在Order Items中保留多次。

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

这是基本的标准化。