2011-03-30 196 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條記錄)。