2012-12-05 58 views
0

我正在編程一個非常簡單的支付Web應用程序,這是我第一次嘗試編程任何東西。我遇到了麻煩,我的數據庫結構,有人說它應該正常化。正常化一個非常簡單的支付系統的表結構

目前我有以下結構。

Customers 
--------- 
id, firstName, lastName, country 

Items 
--------- 
id, itemName, itemCost 

Purchases 
---------- 
customerID, dayCost, serviceCost, numItem1, numItem2, numItem3 

Orders 
---------- 
orderId, customerId, amountPaid, date 

我需要能夠做一個查詢在那裏我可以顯示以下內容:

  • 總計:140
  • 日費用:50
  • 服務成本:70
  • 日冕成本:20(4)
  • 項目2成本:0
  • 項目3成本:0
  • 總超欠:100

我的想法是(由item.itemName purchases.numItem1其中id = 1 + purchases.dayCost + purchases.serviceCost)來計算,例如, - orders.amountPaid。

這是不對的,我不知道它應該是什麼。

我需要能夠在查詢中返回客戶訂購的每件商品的數量,每件商品的總成本和欠款總額。

什麼是更好,規範化的表結構允許此查詢?

我不能簡單地在客戶和物品ID以及數量和金額支付下訂單表,因爲我必須使用網頁上的表單並且該結構不起作用。

+0

你以前試過數據流圖或關係表嗎?如果沒有,那麼我認爲它有必要做到這一點。 – polin

+1

什麼是日消費和服務費用? –

+0

@Olaf dayCost和serviceCost是任意數量,將通過頁面上的文本字段表單元素直接輸入。 –

回答

0

客戶和物品可以在需要時進行擴展,但到目前爲止還不錯。

如果daycost和servicecost每件,你可以改變購買到

Purchases 
---------- 
orderId, dayCost, serviceCost, itemid, itemsBought 

現在,您可以通過

select sum(p.itemsBought * i.itemcost + p.daycost + p.servicecost) as itemsCost 
from purchases p 
join items i on p.itemid = i.id 
where p.orderid = 17 

或客戶欠

量計算訂單的成本
select sum(p.itemsBought * i.itemcost + p.daycost + p.servicecost) 
     - sum(o.amountPaid) as owing 
from purchases p 
join items i on p.itemid = i.id 
join orders o on o.orderid = p.orderid 
where o.customerid = 284