我正在设计一个数据库,该数据库将用于存储来自多个不同来源的数据。我存储的实例由原始来源分配了唯一的 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
,我不确定它是否对争论很重要,但是假设我更喜欢使用SQLite
and MySQL
。
在这种情况下使用复合外键有什么优缺点?你更喜欢哪个?