我正在编写一个非常简单的支付网络应用程序,这是我第一次尝试编程。我的数据库结构遇到了麻烦,人们说应该将其标准化。
目前我有以下结构。
Customers
---------
id, firstName, lastName, country
Items
---------
id, itemName, itemCost
Purchases
----------
customerID, dayCost, serviceCost, numItem1, numItem2, numItem3
Orders
----------
orderId, customerId, amountPaid, date
我需要能够进行查询,以便显示以下内容:
我的想法是计算,例如,按照item.itemName的purchase.numItem1,其中id = 1 + purchases.dayCost + purchases.serviceCost) - orders.amountPaid。
这是不对的,我不确定它应该是什么。
我需要能够在查询中返回客户订购的每件商品的数量,每件商品的总成本以及总费用。
什么是允许此查询的更好的规范化表结构?
我不能简单地拥有一个包含客户和物品ID以及支付数量和金额的订单表,因为我必须在网页上使用表单并且该结构不起作用。
答案 0 :(得分: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