gpt4 book ai didi

sql - 复合主键

转载 作者:太空狗 更新时间:2023-10-30 01:40:12 32 4
gpt4 key购买 nike

我正在设计一个数据库,该数据库将用于存储来自多个不同来源的数据。我存储的实例由原始来源分配了唯一 ID。我存储的每个实例都应包含有关其来源的信息,以及与该来源关联的 ID。

例如,请考虑下表来说明问题:

----------------------------------------------------------------
| source_id | id_on_source | data |
----------------------------------------------------------------
| 1 | 17600 | ... |
| 1 | 17601 | ... |
| 2 | 1 | ... |
| 3 | 1 | ... |
----------------------------------------------------------------

请注意,虽然每个来源的 id_on_source 都是唯一的,但可能会为不同的来源找到相同的 id_on_source

我对关系数据库有一定的了解,但远非专家甚至经验丰富的用户。我在这个设计中面临的问题是我应该将什么用作主键。数据似乎指示使用 (source_id, id_on_source) 的复合主键。经过一番谷歌搜索后,我发现了一些关于复合主键优缺点的激烈争论,这让我有点困惑。

该表会与其他表存在一对多的关系,因此会在其他表的外键中引用。

我不依赖于特定的 RDBMS,我不确定它是否对争论很重要,但假设我更喜欢使用 SQLiteMySQL

在这种情况下使用复合外键的优缺点是什么?你更喜欢哪个?

最佳答案

我个人觉得复合主键很痛苦。对于您希望加入“源”表的每个表,您需要添加 source_id 和 id_on_source 字段。

我会在您的源表上创建一个标准的自动递增主键,并在 source_id 和 id_on_source 列上添加一个唯一索引。

这样您就可以将源表的 ID 添加为其他表的外键。

一般来说,我还发现在许多框架和工具产品中对复合主键的支持充其量是“不完整的”,而在其他框架和工具产品中则不存在

关于sql - 复合主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1383062/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com