数据库中“候选码”是什么概念?

 我来答
百度网友e1495c6
2018-05-28 · TA获得超过980个赞
知道答主
回答量:25
采纳率:0%
帮助的人:3518
展开全部

1.超码:

超码是一个或多个属性的集合,这些属性可以让我们在一个实体集(所谓的实体集就是student表中多条记录的集合)中唯一地标识一个实体。如果K是一个超码,那么K的任意超集也是超码,也就是说如果K是超码,那么所有包含K的集合也是超码。

1.1例子:
因为通过id可以找到唯一一个学生,所以{id}是一个超码,同理{id,student_number}、{id,student_number,name}、{id,student_number,name,sex}、{student_number}、{student_number,name}、{student_number,name、sex}也是超码.

2.候选码:

虽然超码可以唯一标识一个实体,但是可能大多数超码中含有多余的属性。所以我们需要候选码。如果任意超码的真子集不能包括超码,则称其为候选码;超码包括候选码。

2.1例子:
在上例中,只有{id}、{student_number}都是候选码;另外,如果sex和name可以唯一标识一个学生,则{name,sex}也为超码,但是,sex和name并不能唯一标识一个学生,这与现实生活是违反的,因为现实有同名同姓的人,则{name,sex}不能作为超码。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
彩驰科技
2024-11-24 广告
生成式算法备案是北京彩驰科技有限公司确保技术合规的重要环节。我们严格遵守国家相关法律法规,对所使用的生成式算法进行全面梳理和备案。备案过程中,我们详细记录算法的名称、功能、应用场景及潜在风险等信息,并接受相关监管部门的审核与监督。通过备案,... 点击进入详情页
本回答由彩驰科技提供
greystar_cn
2018-03-09 · 知道合伙人软件行家
greystar_cn
知道合伙人软件行家
采纳数:16407 获赞数:17260
本人主要从事.NET C#方向的技术开发工作,具有10多年的各类架构开发工作经验。

向TA提问 私信TA
展开全部
码是数据系统中的基本概念。所谓码就是能唯一标识实体的属性,他是整个实体集的性质,而不是单个实体的性质。它包括超码,候选码,主码。
超码是一个或多个属性的集合,这些属性可以让我们在一个实体集中唯一地标识一个实体。如果K是一个超码,那么K的任意超集也是超码,也就是说如果K是超码,那么所有包含K的集合也是超码。
候选码是从超码中选出的,自然地候选码也是一个或多个属性的集合。因为超码的范围太广,很多是我们并不感兴趣即无用处的。所以候选码是最小超码,它们的任意真子集都不能成为超码。例如,如果K是超码,那么所有包含K的集合都不能是候选码;如果K,J都不是超码,那么K和J组成的集合(K,J)有可能是候选码。是从多个候选码中任意选出一个做为主码,如果候选码只有一个,那么候选码就是主码。虽然说主码的选择是比较随意的,但在实际开发中还是要靠一定的经验,不然开发出来的系统会出现很多问题。一般来说主码都应该选择那此从不或者极少变化的的属性。
超码:一个或多个属性的集合,这些属性的组合可以使我们在一个实体集中唯一的标识一个实体。

例如:学生是一个实体,则学生的集合是一个实体集,而超码是用来在学生的集合中区分不同的学生。假设学生(实体)具有多个属性:学号,身份证号,姓名,性别。因为通过学号可以找到唯一一个学生,所以{学号}是一个超码,同理{学号,身份证号}、{学号,身份证号,姓名}、{学号,身份证号,姓名,性别}、{身份证号}、{身份证号,姓名}、{身份证号,姓名、性别}也是超码.在这里,因为不同的学生可能拥有相同的姓名,所以姓名不可以区别一个学生,既{姓名}不是一个超码,{性别}、{姓名、性别}也不是。
虽然超码可以唯一标识一个实体,但是可能大多数超码中含有多余的属性。所以我们需要候选码。

候选码:如果任意超码的真子集不能包括超码,则称其为候选码;超码包括候选码;
在上例中,只有{学号}、{身份证号}都是候选码;另外,如果性别和姓名可以唯一标识一个学生,则{姓名,性别}也为超码。

主码:被数据库设计者选中的,用来在同一实体集中区分不同实体的候选码;此外,应该选择哪些从不或极少变化的属性;

总结:所有码都是一个集合。所有可以用来在实体集中标识唯一实体的集合,都是超码。  如果任意超码的真子集不能包括超码,则称其为候选码。被数据库设计者选中的,用来在同一实体集中区分不同实体的候选码。超码包括候选码,候选码包括主码
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
greystar_cn
2018-01-02 · 知道合伙人软件行家
greystar_cn
知道合伙人软件行家
采纳数:16407 获赞数:17260
本人主要从事.NET C#方向的技术开发工作,具有10多年的各类架构开发工作经验。

向TA提问 私信TA
展开全部
码是数据系统中的基本概念。所谓码就是能唯一标识实体的属性,他是整个实体集的性质,而不是单个实体的性质。它包括超码,候选码,主码。
超码是一个或多个属性的集合,这些属性可以让我们在一个实体集中唯一地标识一个实体。如果K是一个超码,那么K的任意超集也是超码,也就是说如果K是超码,那么所有包含K的集合也是超码。
候选码是从超码中选出的,自然地候选码也是一个或多个属性的集合。因为超码的范围太广,很多是我们并不感兴趣即无用处的。所以候选码是最小超码,它们的任意真子集都不能成为超码。例如,如果K是超码,那么所有包含K的集合都不能是候选码;如果K,J都不是超码,那么K和J组成的集合(K,J)有可能是候选码。是从多个候选码中任意选出一个做为主码,如果候选码只有一个,那么候选码就是主码。虽然说主码的选择是比较随意的,但在实际开发中还是要靠一定的经验,不然开发出来的系统会出现很多问题。一般来说主码都应该选择那此从不或者极少变化的的属性。
超码:一个或多个属性的集合,这些属性的组合可以使我们在一个实体集中唯一的标识一个实体。

例如:学生是一个实体,则学生的集合是一个实体集,而超码是用来在学生的集合中区分不同的学生。假设学生(实体)具有多个属性:学号,身份证号,姓名,性别。因为通过学号可以找到唯一一个学生,所以{学号}是一个超码,同理{学号,身份证号}、{学号,身份证号,姓名}、{学号,身份证号,姓名,性别}、{身份证号}、{身份证号,姓名}、{身份证号,姓名、性别}也是超码.在这里,因为不同的学生可能拥有相同的姓名,所以姓名不可以区别一个学生,既{姓名}不是一个超码,{性别}、{姓名、性别}也不是。
虽然超码可以唯一标识一个实体,但是可能大多数超码中含有多余的属性。所以我们需要候选码。

候选码:如果任意超码的真子集不能包括超码,则称其为候选码;超码包括候选码;
在上例中,只有{学号}、{身份证号}都是候选码;另外,如果性别和姓名可以唯一标识一个学生,则{姓名,性别}也为超码。

主码:被数据库设计者选中的,用来在同一实体集中区分不同实体的候选码;此外,应该选择哪些从不或极少变化的属性;

总结:所有码都是一个集合。所有可以用来在实体集中标识唯一实体的集合,都是超码。  如果任意超码的真子集不能包括超码,则称其为候选码。被数据库设计者选中的,用来在同一实体集中区分不同实体的候选码。超码包括候选码,候选码包括主码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式