Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL与历史数据的关系_Mysql - Fatal编程技术网

MySQL与历史数据的关系

MySQL与历史数据的关系,mysql,Mysql,在使用MySQL之前,我一直在使用静态CSV生成在云环境中显示数据的仪表板(目前是PowerBI,正在进行Python构建课程)。CSV(计算/存储)分为5个表,每个表连接所附的图像 然而,迁移到MySQL将允许我定期加载这些CSV,所以我已经设置了一个Python脚本,每天都这样做。在导入MySQL之前,它会将日期/时间附加为“报告日期”列。这就是我似乎遇到问题的地方,这样做会破坏关系,例如,现在“集群名称”不再是唯一的 处理这种情况的最佳方法是什么?目前,我已将主键设置为日期和唯一名称,

在使用MySQL之前,我一直在使用静态CSV生成在云环境中显示数据的仪表板(目前是PowerBI,正在进行Python构建课程)。CSV(计算/存储)分为5个表,每个表连接所附的图像

然而,迁移到MySQL将允许我定期加载这些CSV,所以我已经设置了一个Python脚本,每天都这样做。在导入MySQL之前,它会将日期/时间附加为“报告日期”列。这就是我似乎遇到问题的地方,这样做会破坏关系,例如,现在“集群名称”不再是唯一的


处理这种情况的最佳方法是什么?目前,我已将主键设置为日期和唯一名称,并使用外键将表连接在一起。这是正确的方法,还是我遗漏了一些可以使处理“重复”数据(减去日期)更容易的方法?(不幸的是,我在谷歌上搜索的任何关于日期的内容似乎都是关于数据类型“DATETIME”,而不是实际处理日期)

将每个对象定义为一个表。然后将关系作为链接表。日期可以保存在链接表中

Cluster     name
Host        name
Datastore   name
Disk        name
Instance    name
然后关系:

Cluster_has_host     cluster_name, host_name, date
Host_has_Instance    host_name, instance_name, date
and so on
通过这种方式,您可以将对象存储为单个实体,并为关系而不是对象指定日期

您必须这样考虑您的数据模型:

  • 对象及其属性是表
  • 关系是链接表
  • 关系的属性在链接表中

这是一个可能引起混淆的例子。磁盘大小是多少?你可以

  • 每种大小定义一个磁盘对象。这假设磁盘的大小固定,不能改变
  • 将磁盘大小添加到数据存储\u has\u磁盘。通过这种方式,在特定日期,您将知道磁盘的大小。这假定磁盘的大小可以更改

  • 这取决于您查看数据的方式。磁盘是对象,还是“特定大小的磁盘”是对象?这一点您必须根据自己的要求自行解决。

    您对pk中包含日期字段有何顾虑?我主要关心的是如何在将日期字段引入组合的同时保持现有的1-many关系设置-这样做会删除唯一值,我可以在每个表中添加合并的日期/唯一名称列吗?也许这是完全可以做到的,而更多的是在仪表板(PowerBI/Python)端,我需要找到一种可视化数据的方法。这实际上取决于您的需求,没有普遍有效的答案!如果需要将历史数据存储在一个表中,则需要将日期(或指示各种上载的任何其他值)添加到主键中。