1

我看到它说我应该有一个 SQL 数据库中所有表的主键。但是,我创建了一个数据库,其中包含许多表,这些表仅用于存储属于第一个属性的另一个属性的 ID。在这两种情况下,我都需要多次提及每个 ID,那么我应该使用什么(如果有的话)作为主键?

4

3 回答 3

1

通常,您可以只使用列“id”作为主键来跟踪行号。对于存储的属性,您可以拥有名为“stored_attribute_id”的列

于 2013-05-01T15:57:29.230 回答
1

你的问题很不清楚。主键定义了列的组合,对于该表,您定义的列必须是唯一的。如果条目包含在另一个表中,您可能需要调查外键

于 2013-05-01T15:59:01.627 回答
1

如果我明白你在说什么,有两种方法

主键可以是复合的

例如。CustomerContacts 可以有 CustomnerID 和 ContactID,两个列的主键

所以你可以有

1,1
1,2
2,2
2,3

但是您不能将另一个 Customer2 链接到 Contact2

另一种方式是代理,通常是自动增量

CustomerContacts
CustomerContactID, CustomerID, ContactID, now you could have
1,2,2
2,2,2

您可能想要也可能不想要。

选择你想要的,因为你所看到的是非常真实的,没有唯一的密钥,除了诗意地遭受一系列性能问题之外,你会得到“其他用户更改记录问题”

所以说你有一个名字表,托尼在里面两次。你想删除其中一个,DBMS 如何识别 Tony 必须去哪一个?它要么会摆脱两者,要么会非常沮丧并将其玩具扔出婴儿车。

如果它没有唯一的密钥,它就失败了第一范式,这意味着你可以和其他人告别。

于 2013-05-01T16:25:13.740 回答