1

如果没有唯一的列可以识别表中的每一行,

那么我的主键将至少是一组两个字段。

那是对的吗?

如果是正确的,那么在绘制关系图时,我必须在构成主键的两个属性下划线?

谢谢

4

3 回答 3

2

这是一些术语:

  • 超级键是一组列,它们一起唯一标识行。
  • 候选键(或简称:“键”)是最小的1 个超级键。有时一个键只包含一列,有时它包含几列(在这种情况下,它被称为“复合”)。
  • 出于实际原因,我们将键分为主键或备用键。一张表有一个主键和零个或多个备用键。
  • 如果密钥来自数据的内在属性,则它是“自然的” 。换句话说,它“意味着”某事。
  • 如果一个键本身没有任何意义,那么它就是“代理” ——它仅用于识别目的。它通常实现为自动递增整数,但可能还有其他策略,例如 GUID(用于复制)。自然键是复合的很常见,但代理项几乎不会发生这种情况。

如果没有“明显”的自然键,则整行始终可以充当键2。但是,这很少实用,在这种情况下,您通常会引入代理键来识别行。

有时,但并非总是如此,在现有自然键之外引入代理项是有用的。

ER 图将清楚地识别 PK 3,无论它是自然的还是替代的,以及它是否是复合的。这看起来如何取决于所使用的符号,但 PK 通常以图形不同的方式绘制,并且可能以“PK”为前缀。


1即,如果您要从中删除任何列,它将不再是唯一的。

2数据库表是“关系”数学概念的物理表示。由于设置了关系,因此拥有两个相同的行是没有意义的,因此至少整行必须是唯一的(一个元素要么在集合中,要么不在集合中 - 它不能在集合中“两次”,因为反对多集)。

3假设它不仅仅是实体级别,所以根本没有显示任何属性。

于 2012-09-12T00:16:24.753 回答
1

你是对的,在时尚之后。从技术上讲,主键和唯一键可以是两个不同的东西。您可以在表或实体上拥有唯一标识该实体的主键,并且还可以。在同一张表上,您可以有一个唯一的键约束,然后可以使用它来确保根据您选择的标准,没有两行最终具有相同的属性。因此,您可以在同一张表上同时拥有主键和唯一约束。只需在数据库中自动生成一个主键列,然后在表中选择要用于强制唯一键约束的两列

于 2012-09-12T07:21:28.277 回答
0

如果您没有主键,您可以识别您的数据,但它不是高性能的。

作为最佳实践,您在桌子上使用主要。

首选是使用自动增量列作为主键

于 2012-09-11T19:56:19.803 回答