Closed. This question is off-topic。它目前不接受答案。
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
三年前关闭。
在一个系统中,我需要为一些不同的水电费账单保存数据,以便将来进行报告和计算。
今天,每个公用事业账单都有几个不同的帖子/行。例如,
由于我希望以后能够使用数据库来搜索不同时间段、公用事业账单类型等的数据,所以我需要拿出一个可靠的数据库设计。下面是我的开始。
数据示例:
在上面的例子中
并非所有水电费账单都是基于每月周期的。在某些情况下,它可以是
因此,对以上设计和思想的任何建议都是非常感谢的。我是否应该对设计进行一些补充,以便以后在
然后,使用
最显著的改进是在
如果行的内容是稳定的,您可以添加一个
同时,要了解“成本”和“费用”的概念。在你的终端,所有这些值都是收费。是你的客户看到了成本。因此,如果您创建了这个字段,一个更好的名称应该是
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
三年前关闭。
在一个系统中,我需要为一些不同的水电费账单保存数据,以便将来进行报告和计算。
今天,每个公用事业账单都有几个不同的帖子/行。例如,
electricity
账单可以包括fixed fee
(账单日期范围内的金额)consumption
(通常按千瓦时电费、立方米水费等计费)taxes
(可以是能源税)由于我希望以后能够使用数据库来搜索不同时间段、公用事业账单类型等的数据,所以我需要拿出一个可靠的数据库设计。下面是我的开始。
`utility_bill`
`id` int(11)
`vendor_id` int(11)
`type_id` int(11)
`notes` varchar(255)
`date_issued` date
`date_due` date
`utility_bill_rows`
`id` int(11)
`utility_bill_id` int(11)
`name` varchar(64)
`startdate` date
`enddate` date
`units` double
`unit_price` double
`unity_type` varchar(16)
数据示例:
`utility_bill`
1 2 2 Electricty bill (august) 2016-09-01 2016-09-30
`utility_bill_rows`
1 1 Fixed fee 2016-08-01 2016-08-31 31 10 days
2 1 Consumption 2016-08-01 2016-08-31 500 1 kwh
3 1 Government taxes 2016-08-01 2016-08-31 500 0.1 kwh
在上面的例子中
bill_total
将是310 + 500 + 50 = 860
并非所有水电费账单都是基于每月周期的。在某些情况下,它可以是
2016-07-01 to 2016-09-30
,2016-08-15 to 2016-09-15
等等。因此,我考虑在表utility_bill_rows
中添加一个名为daily_cost
的新列,这个列就是(units * unit_price) / (enddate - startdate in days)
。因此,对以上设计和思想的任何建议都是非常感谢的。我是否应该对设计进行一些补充,以便以后在
最佳答案
一些建议:
假设你想把一段时间内所有的税收加起来。查询中应该有“where name=”Government taxes“。这不是很有力,只是尴尬。
尝试将这些类别放在一个名为“噢,billedUnits
”的单独查找表中:
ID Name Other_info
1 Fixed fee ...
2 Consumption ...
3 Taxes ... -- "Government" is a duplicative redundancy
然后,使用
name
并使用查找表的ID值,而不是utility_bill_rows
中的字段billedUnitID
。这也使得添加“太阳能附加费”等新类别更加容易。最显著的改进是在
term
表中添加一个utility_bill
字段。这可以是一个单字符指示符,例如“M”表示每月,而“Q”表示季度,或者是一个小整数,例如30和90表示学期的天数。这将大大简化仅涉及每月账单或仅涉及季度账单的查询。我稍微倾向于整数,因为这样也可以简化每天的计算。如果行的内容是稳定的,您可以添加一个
daily_cost
字段——也就是说,如果一次写入,值很少发生变化。如果有相对频繁的调整,不用麻烦,只要重新计算时需要。同时,要了解“成本”和“费用”的概念。在你的终端,所有这些值都是收费。是你的客户看到了成本。因此,如果您创建了这个字段,一个更好的名称应该是
daily_charge
。关于mysql - 水电费账单数据库设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39788692/
10-11 02:12