首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >候选密钥的意义是什么?

候选密钥的意义是什么?
EN

Stack Overflow用户
提问于 2010-10-19 01:01:57
回答 5查看 9.7K关注 0票数 16

我是数据库管理的新手,这个问题似乎从来不会在超过一句话中得到回答。所有其他的SO答案都是“候选密钥是最小的超级密钥”。这对我来说毫无意义。

候选键应该指定数据库记录的唯一性,对吗?并且主键是候选键。如果主键已经指定了唯一性,那么添加更多候选键又有什么意义呢?

我见过类似如下的示例记录:

员工(ID,姓名,PhoneNumber)

其中ID是主键,PhoneNumber是候选键。在我看来,ID足以指定员工记录的唯一性。尽管PhoneNumbers (可能)是唯一的,但在我看来,将它们指定为候选键并不是“最小的”。

EN

回答 5

Stack Overflow用户

发布于 2010-10-19 06:49:53

候选键与主键的含义完全相同。所有候选关键字都有相同的用途:通过防止重复数据来确保数据完整性。如果有必要确保某些数据不会重复,那么在一个表中强制使用多个候选键是非常合理的。

请注意,在此上下文中的minimal并不意味着最小。它的意思是不可约。即不能从密钥中移除任何属性,同时仍然保持其唯一性。

票数 5
EN

Stack Overflow用户

发布于 2013-04-01 14:35:15

我们使用候选键,因为有时需要处理记录和其他问题,例如银行系统的数据库,其中Account_No是主键,SocialSecurity_NO将是候选键,我们保留SocialSecurity_NO作为唯一键,因为如果政府在提供SocialSecurity_NO时出错,那么将会有很大问题,所以我们已经将其声明为唯一键,所以不可能有两个具有相同SocialSecurity_NO的用户能够进行帐户...

主键-候选键-属性3-属性4

Account_No SocialSecurity_NO

票数 1
EN

Stack Overflow用户

发布于 2019-05-21 09:08:30

在RM (关系模型)中:超键是唯一的列集。CK (候选密钥)是不包含更小的超密钥的超密钥。它是PK (主键)的候选者。PK就是你决定称之为PK的CK。其他的CK是AK(备用密钥)。

SQL PK是唯一的NOT NULL,不一定是CK/PK。所以我们可以说一个SQL是唯一的非NULL,是声明为SQL的候选者,我们可以称其他的为SQL。在SQL上下文中,当人们在RM & SQL中使用这些具有不同含义的术语时,您必须询问他们是什么意思。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3961455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档