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