为什么数据库中需要UNIQUE约束?SQL中的UNIQUE约束(SQL Server)
你能提供任何例子吗?
主键默认情况下唯一的了理解的,因为他们被称为在其他表外键...关系,需要将它们连接到RDBMS平台...
但为什么一个参考其他列为UNIQUE,这样做的好处是什么?)
为什么数据库中需要UNIQUE约束?SQL中的UNIQUE约束(SQL Server)
你能提供任何例子吗?
主键默认情况下唯一的了理解的,因为他们被称为在其他表外键...关系,需要将它们连接到RDBMS平台...
但为什么一个参考其他列为UNIQUE,这样做的好处是什么?)
尽可能使用约束条件来确保数据库符合预期。在这种特殊情况下,唯一约束对确保数据质量最有用。
一个唯一的约束可能在电子邮件地址列上很有用,例如,这会要求没有两行具有相同的电子邮件地址 - 虽然它不会是PK,并且通常会被允许更改。
任何时候,你有独特的期望和价值尚未被PK或类似的限制,不是添加唯一约束可以确保你的假设会始终保留。
通常,约束也be used by the optimizer可以。
在Celko的上制约系列的第二篇文章是专门关于unique constraints。
emailID可以是唯一的。
差异UNIQUEID和主键之间是唯一支持在整个列,但不会PK的单一空。
主键是一个逻辑数据库概念,它在SQL Server中使用索引实现,但不需要集群化。 – 2010-04-12 17:22:01
一个PK不一定非要聚集,只有在你没有指定任何东西时才会聚集,因为默认情况下它会聚集在一起 – SQLMenace 2010-04-12 18:07:39
当事情是一个主键,我不希望它改变 - 它应该是静态的,因为它用于在数据库链接到其他表。如果你的“主键”将会改变(比如说,一个用户名),那么它应该是你表中的一个附加字段,而主键应该是某种增加的ID。
不过,你仍然不能有两个用户使用相同的用户名 - 在这种情况下,唯一的限制是必要的。
大多数时候我们在设计数据库时都会将主键保留为标识字段。尽管将其作为身份领域是有道理的,但它可能无法解决实现独特性的问题。为了确保行是唯一的,我们在列上设置了一个唯一的约束条件(就像Andrey指定的UserNane一样)。这就是MSDN说:
您可以使用UNIQUE约束来确保没有重复的值输入到不参与主键的特定列中。尽管UNIQUE约束和PRIMARY KEY约束都强制执行唯一性,但如果要强制实施不是主键的列或列组合的唯一性,请使用UNIQUE约束而不是PRIMARY KEY约束。
HTH
有一对夫妇的PK和UQ之间的差异。 一个PK可以没有NULL值,其中一个UQ可以有一个空值(Oracle允许有多个NULL值)。 只能有每个表1轮的PK,但你可以为每个表 多个UQ默认情况下PK是集群(但不是必须)如果数据要求是唯一的,那么你需要一个
独特的约束。否则,你会得到糟糕的数据。 PK必须是唯一的,但这并不意味着其他数据也不必是唯一的。也许每个记录都必须有一个独特的日期时间,这不太可能是PK,但必须以某种方式执行唯一性。
特别是如果您使用PK的代理键(我强烈建议),那么您要确保自然键区域是独特的禁区的一部分,以避免重复数据。
查找类型数据的情况也是如此。假设您有一份医生专业专业列表,您可以在用户输入数据时选择这些专业专业名称,并假设他们也可以在需要时添加到此列表中。一个独特的约束可以防止多次输入肿瘤学家,这样当你想要找到肿瘤学家的人数时,这会更容易。
根据定义,主键总是唯一的。 – 2010-04-12 17:23:22