为什么数据库中需要 UNIQUE 约束?
你能提供任何例子吗?
默认情况下,主键是唯一的......可以理解,因为它们在其他表中被称为外键......需要关系来连接它们以用于 rdbms 平台......
但为什么要将其他列称为 UNIQUE,这样做有什么好处?)
为什么数据库中需要 UNIQUE 约束?
你能提供任何例子吗?
默认情况下,主键是唯一的......可以理解,因为它们在其他表中被称为外键......需要关系来连接它们以用于 rdbms 平台......
但为什么要将其他列称为 UNIQUE,这样做有什么好处?)
当某些东西是主键时,我不希望它改变 - 它应该是静态的,因为它用于链接到数据库中的其他表。如果您的“主键”将发生变化(例如,用户名),那么它应该是表中的一个附加字段,而主键应该是某种递增的 ID。
但是,您仍然不能有两个用户具有相同的用户名 - 在这种情况下,唯一的约束是有保证的。
用户名是唯一的,但不是PK。用户 ID 是 PK。
PK 和 UQ 之间存在一些差异。PK 不能有 NULL 值,而 UQ 可以有 1 个空值(Oracle 允许多个 NULL 值)。每个表只能有 1 个 PK,但每个表可以有多个 UQ 默认情况下,一个 PK 是集群的(但不需要是)
如果要求数据是唯一的,那么您需要一个唯一约束。否则你会得到糟糕的数据。PK 必须是唯一的,但这并不意味着其他数据也不需要是唯一的。也许每条记录都必须有一个唯一的日期时间,这不太可能是 PK,但必须以某种方式强制执行唯一性。
特别是如果您为 PK 使用代理键(我强烈推荐),那么您希望确保自然键字段是唯一约束的一部分,以避免数据重复。
查找类型数据也是如此。假设您有一个医生的专业列表,您的用户可以在输入数据时从中选择,并假设他们也可以在需要时添加到此列表中。一个独特的约束将阻止多次输入 Oncologist,这将使您更容易实际找到肿瘤学家的人数。
大多数时候,当我们设计数据库时,我们将主键保留为身份字段。尽管将其作为身份字段是有意义的,但它可能无法解决实现唯一性的问题。为了确保行是唯一的,我们在列上设置了唯一约束(因为 Andrey 指定了 UserNane)。这是MSDN所说的:
您可以使用 UNIQUE 约束来确保在不参与主键的特定列中没有输入重复值。尽管 UNIQUE 约束和 PRIMARY KEY 约束都强制唯一性,但当您想要强制非主键的列或列组合的唯一性时,请使用 UNIQUE 约束而不是 PRIMARY KEY 约束。
高温高压
emailID 可以是唯一的。
uniqueID和主键之间的区别是唯一支持整个列中的单个空值,但 PK 不会。