2011-03-30 181 views
0

我有一个存储产品销售的数据库。我的销售表由以下字段组成:[saleID],[itemCode],[Date],[storeID],[quantitySold]。问题是我希望用户能够插入多个saleID的付款。数据库设计

价格来自物品表,但如果购买多件物品可能会有折扣。我希望能够存储一个finalPayment字段和多个连接到它的销售额,然后按特定的finalPayment对销售进行分组。但是,可能有相同的总额finalPayments不属于同一销售批次,所以我无法将其作为销售表中的字段按finalPayment进行分组。

我可以创建一个finalPayments表,并且每次进行多项销售和折扣时,在其中存储新的最终付款,检索最后一个finalPaymentID,然后将其存储在销售表中(在新字段中[finalPaymentID]我会创造)每一个属于它的销售。然后我可以通过finalPaymentID对销售进行分组。

表中的最后一个finalPaymentID是否可以由其他商店创建?会不会有并发问题?我是否需要以某种方式锁定表格,直至检索到finalPaymentID并将其存储在销售表格中?你将如何实现这一点?

回答

0

我实际上做了付款表。我用 string insertSQL =“INSERT INTO [payments]([paymentSum])VALUES(@paymentSum); SELECT @@ Identity”;

然后将检索到的付款ID存储到作为批次一部分的每笔销售的销售表中。

1

我会创建多个表。

表顺序将包含的OrderId,日期,STOREID

然后,我将创建一个OrderItem的表,其中将包括的OrderId,项目,数量,价格

会有从一到多relationwhip orderItem表到订单表。

通过这种方式,您可以按OrderId进行分组以获取您的数量和值。

0

听起来像一个购物车的架构 - 这样的事情应该做的:

Product (your Items table) 
- | ProductId | Whatever 

Payment 
- | PaymentId | Date | Whatever 

Cart 
- | CartId | UserId | ProductId | PaymentId 

对于每个产品,你必须在产品的记录。每笔“付款”记录都是所有产品的总和(购物车总数)。销售中的每个记录都是“购物车”中每个商品的唯一标识符,因此,您可以说用户ID 1在购物车中有3个商品用于特定付款ID(3条记录)。