mysql - 在当前表中保存去年的值
问题描述
这是一个关于数据库设计的更普遍的问题。我目前正在将 Excel/VBA 程序迁移到 SQL 并遇到以下情况,我需要深思熟虑,因为我是第一次这样做。
excel中的现状: excel sheet
到目前为止的新 MySQL 表的一部分:
+--------------+-------------------+---------+----------+-------+---------------+
| licenseplate | mileage_last_year | january | february | march | first_quarter |
+--------------+-------------------+---------+----------+-------+---------------+
| BP 11-111 | NULL | 100 | 100 | 100 | 300 |
| BP 11-222 | NULL | 561 | 1111 | 707 | 2379 |
+--------------+-------------------+---------+----------+-------+---------------+
“first_quarter”等都是生成的列,目前没有问题。
但是,将当前年份的里程保存到下一年的最佳做法是什么?
- 每年一个新表并从前端查询它,这取决于用户的选择?
- 每个车牌/汽车和年份都有一个新行,并且只在前端显示当前年份?
解决方案
首先,您需要确定要存储的数据的粒度是多少:这里是年、月级别的里程数。因此,您可以相应地决定表结构和粒度。
您需要标准化为不同的表。
- 年表(年)
月表(MonthId,MonthName,QuarterName)
LicensePlate 表(LicensePlateId,LicensePlateName)
里程表(LicensePlateId, Year, MonthId, Milage)
您现在可以推导出车牌在特定年份和月份的里程数。您可以在需要时在季度级别聚合值。
注意:您可以将年、月信息合并到单个 calendarMonthTable(CalendarId, Year, Month, MonthName, QuarterName) 中,该表也是月级别的粒度。
推荐阅读
- java - 通过 Burp Suite 进行自动化测试
- javascript - 将动态 url 传递给 React Router
- ruby - “捆绑更新”不起作用并安装在旧版本目录中
- python - BeautifulSoup - 最后一页的分页错误
- azure - Azure 自动化 - 无法删除-AzResourceLock
- sql - 在 SQL 中提取字符串的一部分
- javascript - 使用axios进行for循环,我如何知道是否所有数据都已加载
- docker - Nexus 私有注册表“blob 上传无效”
- html - HTML 中未显示的空格
- node.js - Mongoose 的事务多集合 MongoDB