月租发票和付款数据库架构

时间:2015-05-24 14:42:26

标签: php mysql database schema

我正在尝试为我的应用程序制作架构。我的申请是关于房产(房屋/公寓)租金管理。

我现在面临的最大困惑是如何实施每月付款并记录这些付款以便以后报告。此外,这些付款必须与发票整合。它太混乱了,在数据库部分,我不是一个专家。

关于在线编码有很多帮助,但是真正创建模式我不知道如何学会制作如此复杂的模式。

我有大多数表格。加上创建的付款表,其中有

paymentID,
TenantID,
TotalDues,
PaymentRecieved, //Amount Recieved for the current month dues
PaymentRemaining, //If not fully paid the dues and still remaining..
DateRecieved,
etc etc..

这只是一张简单的桌子,但我真的很困惑如何使它更灵活,以便如果租户本月不支付租金,那么应该在下个月获得总租金。或者,如果本月支付租金的一半或一半,那么下个月应该跟踪它。

我应该怎么做才能使这个系统更灵活,并引入发票系统?

更新

从我收集到的一些答案中,我需要创建另一个表来记录。

所以我们会:

payment_record/Invoice
------------------------------
RecordID | Payment(Month/Year) | Electricity | Gas | Water | Rent | Total
   1            Jan-2015            50          30     5      80    165

我们将有第二张表

Payment/Transaction
------------------------------
PaymentID | RecordID(Foreign-Key) | PaymentReceived | DateReceived
   1                1                      100          2015-01-08

所以第三个表就是

   PaymentDue/Status
   ----------------------------------
   StatusID | PaymentID(Foreign-Key) | PaymentRemaining
      1             1                          65

我缺少什么,或者我有什么需要开始编码?

我仍然不确定还有一件事。如果我这样做,如果租户支付当月的一些金额,两天后他会支付更多的当月。我该如何管理?

我是否需要在paymentduepayment/transaction表中创建另一个条目?

1 个答案:

答案 0 :(得分:2)

您需要通过查看您将同时使用的架构和查询语句来解决问题。

从你的样本中,我意识到你想拥有一个跟踪所有内容的表,这是完全可行的。但是,它需要复杂的插入语句或存储过程来不断更新该表。

为简单起见,请尝试将其拆分为2个表格。这样就不需要追溯更新以前的记录了。由于分离,它还将更快地保持对租户状态的所有查询。第一个只包含静态付款记录:

paymentID,TenantID,PaymentRecieved,DateRecieved,.....

另一个包含租户的状态

TenantID,PaymentRemaining,LatestPaymentID(or date),...

每次租户支付租金时,插入1条静态记录并相应更新状态表。状态表的更新SQL的简单版本可能如下所示。确保你对PaymentRemaining这样的东西添加检查 - $ pay并且不让它变成负数(或者让它变成负数,这样租户下个月会少付钱?)

INSERT INTO status VALUES ($tenantId,$monthlyRent-$payment,$paymentID) ON DUPLICATE KEY 
    UPDATE PaymentRemaining = PaymentRemaining - $payment, LatestPaymentID = $paymentID;

对于您的每月付款/余额检查,只需查看第二个表格。