我对 PostgreSQL 和 SQL 总体来说是新手,并且在理解 PK、FK、序列 id 以及何时使用它们方面遇到了一些问题。我将尝试添加到目前为止我已经尝试过的信息,但我无法回忆起所有内容,因为我已经做了很多尝试和错误。
https://dbdiagram.io/d/biodeg-65f43429ae072629ce19c2b8
这是我的表格的简化版本。我通过 python 和 sqlalchemy 从 csv 文件填充数据库解析和格式化数据。Atm 数据库应该是
每次导出/导入表都会得到:
- “设置元数据”表中的一条新记录。(“Set”是这里的唯一值)
- “测量元数据”表中最多有 6 个新记录(所有这些记录都具有与 1 中添加的记录相同的“Set”值,仅作为“Set”和“Kopf”的组合是唯一的, “ID”或“SN 号”
- “测量数据”表中多达 360 条新记录的六倍(同样,“Set”和“Kopf”(或“ID”/“SN Nr”)的组合应该充当与来自“测量元数据”表的记录。
所以我的问题是:
- 我应该向这些表添加自动递增序列 ID 吗?直观上来说,这对于表 1 和表 2 来说是有意义的,但对于表 3 来说则没有意义,因为来自单个测试的 360 个数据点实际上并不需要递增的 id?
- 假设我没有添加任何 id:我设置 PK、FK 的想法之一如下所示:
。
- PK“设置元数据”表中的“设置”。
- “测量元数据”表中“Set”和“Kopf”的综合 PK
- FK 表示“测量元数据”表中的“集合” 引用“集合元数据”表中的“集合”。
- “测量数据”表中“Set”+“Kopf”的 FK 参考“测量元数据”表中的“Set”和“Kopf”。
- 另外,我认为我必须设置一些独特的约束才能设置这些 FK。
然而,这并没有成功。在 PowerBI 中,这结果是表 1 和表 2 之间的 1:1 关系,这应该是一对多关系(?)。表 2 和表 3 之间也没有任何关系。
那么,我的 3 张桌子应该使用哪种方式 PK 和 FK 呢?
另外,如果建议我向这些表添加 id,则假设表 1 为“set_id”,表 2 为“measurement_id”,这些将成为我的 PK。然后我需要“set_id”作为表 2 中的 FK,但是如何将“set_id”添加到表中,其值与表 1 中引用的“set_id”相同。毕竟,我最多需要 6 个具有相同“set_id”的记录。
非常感谢,我希望这不是要求太多