我正在从头开始创建一个非常简单的应用程序,以允许订购商品,然后显示每个客户的费用。
这是我第一次涉足编程,因此我正在尽力理解很多内容并尽可能遵循最佳实践。
我遇到了一个暂时困扰我的问题
我有以下表结构
**Customers:**
id firstName lastName country days
----------------------------------------
1, john, smith, usa, 5
**Items:**
itemID, itemName, itemCost
------------------------------
1, blueFish, 20
2, dayCost, 10
**Purchases:**
id numBlueFish numPinkFish numRedFish numGreenFish
--------------------------------------------------
1, 0, 0, 2, 4
我希望能够在显示余额的页面上显示以下信息:
<b>Total Balance</b>
<p> Day costs: </p>
<p> Blue Fish cost: </p>
<p> Pink Fish cost: </p>
<p> Red Fish cost: </p>
<p> Green Fish cost: </p>
<p> Total: </p>
<b> Balance Owing :</b>
<p> Day costs total: </p>
<p> Blue Fish total: </p>
<p> Pink Fish total: </p>
<p> Red Fish total: </p>
<p> Green Fish total: </p>
<p> Total: </p>
为了显示上述信息,我想我可以:
- 通过将customers.days乘以items.dayCost来计算每日费用
- 通过将customers.numColorFish乘以items.colorFish来计算每条鱼的成本
- 通过将每个customers.numColorFish 与其对应的items.colorFish 相乘,将它们相加,然后将其添加到customers.days 除以items.dayCost 的结果来计算总数
到目前为止,我认为我的结构可以很好地完成上述所有操作。
我现在想做的是支付任意金额,并显示剩余的待支付余额以及总费用。
如果可能,对于每个成本,可以将鱼的数量放在括号中,例如:
<p> Red Fish total: $160 (4) </p>
我需要从根本上改变我的表结构吗?在我的客户表中添加 amountPaid 列就足够了吗?
我是否应该有一个表格来记录每次付款的情况?这会使输出客户已付款/欠款的情况变得更加复杂吗?
这种方法有哪些缺点?根据更好的实践,有哪些更好的方法?
最佳答案
您的客户是否只进行过一次付款?如果不是,您不想将 amountPaid 添加到您的客户表中。您最想做的是将付款信息存储在一个完全独立的表中。您已经有一个订单表,可以很好地存储您的订单,但您没有任何方法将客户与订单联系起来。
我不知道你到底想做什么,但我会从以下开始:
将 customerId 添加到您的订单表中。
添加您的订单表中所欠的总金额以及剩余的应付金额(我假设该金额是基于下订单时鱼的成本;即不受变化的影响) future 的鱼价)。
添加一个付款表,其中包含 customerId、orderId,并包含已付金额和/或应付金额。使用它来跟踪客户的付款。您可以选择向订单表添加状态字段,并在满足条件时将其更新为已付款(或有条件地依赖剩余金额为零)。
关于mysql - 调整数据库结构或 SQL 查询以允许特定输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13599884/