码、候选码、主码、全码、外码、超码的包含关系

  • 注意:班长学号不是码(因为班长可能为 NULL)

  • 码(Key)包含:候选码、主码、全码、超码。

  • 外码(Foreign Key)独立:属于关系模型的参照完整性机制,不参与码的分类。

1. 基本概念定义

  1. (Key)

    • 定义:能唯一标识关系中元组(记录)的属性或属性组

    • 核心要求:唯一性(不同元组的码值不同)。

  2. 超码(Super Key)

    • 定义:满足唯一性但不要求最小性的码(可能包含冗余属性)。

    • 示例学号+姓名(若学号本身唯一,则“姓名”为冗余属性)。

  3. 候选码(Candidate Key)

    • 定义:满足唯一性最小性的超码(无冗余属性)。

    • 特点:一个关系可能有多个候选码。

    • 示例学号身份证号

  4. 主码(Primary Key)

    • 定义:从候选码中选出的唯一标识符,用于实际数据操作。

    • 特点:不可重复且不可为空。

    • 示例:选定学号为主码。

  5. 全码(All-Key)

    • 定义:关系中所有属性组合才能唯一标识元组,且满足最小性(即无冗余属性)。

    • 特点:属于候选码的特殊情况。

    • 示例:若表中仅有的属性A+B+C必须共同作为码。

  6. 外码(Foreign Key)

    • 定义:引用其他关系主码的属性或属性组,用于维护参照完整性。

    • 特点:本身不属于码的范畴,但依赖主码存在。

    • 示例班级号(引用班级表的主码)。


2. 包含关系与层次结构

(1) 包含关系
  • 超码 ⊇ 候选码:候选码是满足最小性的超码。

  • 候选码 ⊇ 主码:主码是从候选码中选择的一个。

  • 全码 ∈ 候选码:全码是候选码的特殊情况(所有属性共同作为候选码)。

  • 外码 ∉ 码的范畴:外码是关联工具,不属于码的分类。

(2) 层次结构
          超码(Super Key)  
            │  
            ▼  
候选码(Candidate Key)  
            │  
            ▼  
主码(Primary Key)  
            │  
特殊形式 ▼  
全码(All-Key)

3. 对比表

概念唯一性最小性包含关系示例
超码✔️包含候选码和冗余组合学号+姓名
候选码✔️✔️超码的子集学号身份证号
主码✔️✔️候选码的子集选定学号为主码
全码✔️✔️候选码的特殊情况A+B+C(所有属性为码)
外码--不属于码的范畴班级号(引用主码)

4. 关键结论

  1. 超码范围最大:包含所有可能的唯一标识符,无论是否冗余。

  2. 候选码是核心:从超码中筛选出满足最小性的属性组,提供主码的候选池。

  3. 主码是最终选择:从候选码中指定一个作为实际使用的唯一标识。

  4. 全码是候选码的特例:仅当所有属性必须共同作为码时成立。

  5. 外码独立于码的分类:其作用是建立表间关联,而非标识数据。


5. 实际应用示例

学生表(Student)
  • 属性学号(主码)、身份证号(候选码)、姓名班级号(外码)。

  • 分析

    • 超码学号身份证号学号+姓名身份证号+班级号等。

    • 候选码学号身份证号

    • 主码学号

    • 外码班级号(引用班级表的主码)。

    • 全码:不适用,因存在单属性候选码。

全码示例表(OrderDetails)
  • 属性订单号商品号供应商号

  • 分析

    • 候选码订单号+商品号+供应商号(全码)。

    • 说明:仅当三者组合才能唯一标识一条记录,无冗余属性。


总结

  • 超码是广义的唯一标识符,包含冗余组合。

  • 候选码是优化的超码,满足最小性。

  • 主码是候选码的实践选择。

  • 全码是候选码的特殊形式,依赖所有属性。

  • 外码是关联工具,独立于码的分类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值