我正在尝试为 PHP 页面构建一个 mySQL 数据库,该页面将允许用户输入账单成本并选择与谁在房子里分摊。我遇到的问题是我不知道如何计算居民之间的总欠款,考虑到他们已经支付的费用以及他们需要支付给其他人的费用。
我希望它能够处理可变数量的“居民”用户,因此设计了如下表格:
用户表:
UserID | User
-------+---------
1 | Jon
2 | Boris
3 | Natalie
账单表:
BillID | BIll | Amount | Paid By (UserID F.Key)
-------+--------+----------+--------------
1 | Gas | £30.00 | 1 (Jon)
2 | Water | £30.00 | 1 (Jon)
3 | Tax | £60.00 | 2 (Boris)
4 | Phone | £10.00 | 2 (Boris)
因此,此表显示电话费为 10.00 英镑,鲍里斯为此向电话公司支付了费用。
账单-用户负债连接表:
UserID_fKey | BillID_fKey
------------+--------------
1 (Jon) | 1 (Gas)
2 (Boris) | 1 (Gas)
3 (Nat) | 1 (Gas)
1 (Jon) | 2 (Water)
2 (Boris) | 2 (Water)
3 (Nat) | 2 (Water)
1 (Jon) | 3 (Tax)
2 (Boris) | 3 (Tax)
1 (Jon) | 4 (Phone)
2 (Boris) | 4 (Phone)
Bill-Users 表用于描述谁对每个账单负责。因此,例如,娜塔莉从不使用手机,因此不需要为鲍里斯支付任何费用。因此,电话费由 Borris 和 Jon 分摊。因此,乔恩欠鲍里斯 5 英镑。
我认为这是最好的方法,但我不知道如何在每个用户登录时为他们生成一张表,以显示他们彼此欠款。为此(例如),我需要将 Jon 支付的所有费用、每个人代表 Jon 支付的费用加起来并计算出余额。显然,这需要扩展,以便系统中可以有 3 个或更多用户。
这是我想要得到的结果:
(例如:以 Jon 身份登录)
User | Amount Owed
---------+-------------
Boris | -£15.00
Natalie | £20.00
提前谢谢了。