数据库中的主码、候选码、主属性、非主属性

参考链接

候选码、主码、全码、外码、主属性、主键、主关键字、非主属性清晰总结 - 知乎 (zhihu.com)

1.码:

能够标识一条记录的属性或者属性集

2.候选码

能够标识一条记录的最小属性集

任一候选键的任何真子集都不能唯一标识一个记录(比如在成绩表中(学号,课程号)是一个候选键,单独的学号,课程号都不能决定一条记录)

3.主码

唯一标识一条记录的最小属性集(从候选码中认为的挑选一条)

候选码有很多个,但是主码只有一个,所以是从候选码中挑一个

注意:主键只能有一个,但是主键可以有多个属性(这是一个容易被大家误的地方)

4.主属性

主属性是候选码所有属性的并集

5.非主属性

不包含候选码中的属性称为非主属性,非主属性是相对主属性来定义的。

举例

学生成绩信息表中有(学号、姓名、性别、年龄、系别、专业等)

在这个表中的姓名是唯一的,没有重名现象。

由于学号能确定一个学生,因此学生表中含有学号的任意组合都为此表的超键。如:(学号)、(学号,姓名)、(学号,性别)等。

学号唯一,所以是一个超键

姓名唯一,所以是一个超键

(姓名,性别)唯一,所以是一个超键

(姓名,年龄)唯一,所以是一个超键

(姓名,性别,年龄)唯一,所以是一个超键

候选键

学号唯一,而且没有多余属性,所以是一个候选键

姓名唯一,而且没有多余属性,所以是一个候选键

候选键可以是(C)(D)(A ,B)如果是这种的话,单独的A或者B都不能确定一条信息

(姓名,性别)唯一,但是单独姓名一个属性就能确定这个人是谁,所以性别这个属性就是多余属性,所以(姓名,性别)不是候选键

(姓名,年龄),(姓名,性别,年龄)同上,也不是候选键

主键

就是在候选码中选一个,人为规定的,例如学生表中,我们通常会让“学号”做主键,学号能唯一标识这一个元组。

主属性

学号,姓名

非主属性

性别、年龄、系别、专业

练习题

名字会重复

1.答案:

(1)候选关键字2个:(学号),(身份证号)

(2)主关键字:(学号)

(3)主属性2个:学号,身份证号

(4)非主属性2个:姓名,系别

2. 答案:

(1)候选关键字1个:(学号,课程号)

(2)主关键字:(学号,课程号)

(3)主属性2个:学号,课程号

(4)非主属性1个:成绩

3.答案

(1)候选关键字1个:(课程号)

(2)主关键字:(课程号)

(3)主属性1个:课程号

(4)非主属性2个:课程名,学分

### 候选主属性属性的概念及区别 #### 定义与概念 候选是指能够唯一标识实体的一组属性,且这组属性的任何真子集都不能唯一标识该实体。这意味着如果一组属性可以区分所有记录而不重复,则这些属性构成一个候选[^1]。 是从多个候选中挑选出来的一个特殊候选,用于唯一地识别关系中的每一项记录。通常情况下,在设计数据库时会选择最简洁或最具代表性的候选作为[^2]。 主属性指的是那些属于任何一个候选组成部分的属性;换句话说,只要某属性出现在至少一个候选里,它就被认为是一个主属性。而主属性则是指不属于任何候选成员之外的所有其它属性[^3]。 #### 区别说明 - **候选 vs **: 虽然两者都能唯一确定一条记录,但只有当一个候选被指定为键之后才称为“”。也就是说,所有的都是候选的一部分,然而并不是每一种可能成为候选的方式都会实际应用到数据结构的设计当中去充当的角色。 - **主属性 vs 属性**: 主属性是参与构建候选的关键字段之一,它们对于保持表格内部的数据完整性至关重要。相反,属性并不参与到这种约束条件之中,因此可以在不影响唯一性的情况下自由变化。 通过上述定义可以看出,在创建具体的关系型数据库模型之前理解并正确运用这些术语是常重要的。例如在一个学校的学生信息系统内,“学号”通常是理想的单一候选,并最终会被选定为系统的;而像“姓名”,尽管也可能独一无二但却更适合作为辅助检索手段而不是要的身份验证依据。 ```sql CREATE TABLE Students ( StudentID INT PRIMARY KEY, -- Name VARCHAR(50), -- 可能是属性 BirthDate DATE -- 可能是属性 ); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值