mysql - 如何构造 mysql 表以避免多余的行

标签 mysql database database-design data-structures

我正在维护费用记录,费用表如下所示

Expenses(id,name)
Expenses_data(id,amount,expense_id)

费用是按年计算的,比如说 10 年,我将其保存为几个月,所以是 120 个月

如果我有 10 项费用,那么费用数据将有 120*10 = 1200 行

我想将其从 1200 行保存到 120 行,当我在 Excel 中输入时,数据会像这样

id   month    marketing   electricity   bank charges
1    month-1    100          200           300
2    month-2    95.5         5000          100

请建议是否可行以及如何实现?

最佳答案

我认为您可能应该坚持已有的数据库结构,但使用查询以您希望的格式显示数据。

如果您考虑一下您要存储的数据点数量,您所寻求的架构与您已有的架构之间并没有太大区别 - 仍然是 1200 个费用数据点。每次添加费用列时都必须升级架构将是相当具有侵入性的。

坚持使用 Excel 导出查询将使数据库能够理解费用类别的概念,并且更新导出查询以包含新类别比修改架构要容易得多。甚至可以通过迭代“哪些费用类别是已知的?”的初始查询来以编程方式计算必要的 JOIN。

关于mysql - 如何构造 mysql 表以避免多余的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10110648/

相关文章:

php - 使用 laravel 高级 where 子句运行查询

php - 在 JSON 中编码数据

asp.net-mvc - 如何在应用程序中支持多个客户?

php - 如果一个词正确而另一个词错误,SQL 搜索无法返回结果

mysql - 是否可以将mysql 4.0复制到5.0

mysql - 当相关记录包含MySQL中的给定值时,如何从连接表中提取所有数据?

MySQL 5.7 奇怪的性能降低,在分区表上按 ASC/DESC 排序

c# - 在Mysql数据库中存储数据列表?

sql - 将字段存储为单一文本类型 JSON 字符串与拆分到单独表的性能影响

database-design - 如何理解第五范式?