You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

候选键能否包含多个NULL值及对应函数依赖有效性判定

候选键与函数依赖相关问题解答

1. 含多个NULL值的属性能否被认定为候选键

  • 标准关系模型中,候选键的核心判定要求是:能够唯一标识关系中的每一条元组,且是满足该要求的最小属性集合。
  • 由于NULL无法参与等值比较(两个NULL的相等判定结果为未知,不属于相等),存在多个NULL值的属性无法区分这些NULL对应的元组,完全不符合候选键的基础要求,因此不能被认定为候选键。

2. 机场表场景的具体判定

IATA_code是否属于候选键

该场景下IATA_code不属于候选键。你提到的「非NULL的IATA_code可唯一识别机场」的属性,属于数据库工程中常见的**唯一约束(唯一键)**范畴:唯一约束仅要求非NULL值不重复,允许存在多个NULL值,这和候选键、主键要求全列无NULL且唯一的规则有本质区别。

函数依赖 IATA_code → airport_id 是否成立

该判定分两种规则场景:

  • 遵循标准SQL三值逻辑的场景:由于NULL不与任何值(包括其他NULL)相等,所有元组都不会违反「相同IATA_code对应相同airport_id」的规则,该函数依赖在当前表的实际数据下是成立的。
  • 遵循经典关系模型函数依赖定义的场景:经典定义要求属性不能包含NULL值,所有元组的属性都必须有确定取值,因此该场景下由于存在NULL值,函数依赖不成立。
    工程实践中一般默认采用前者的判定逻辑,即认可该场景下该函数依赖成立。

内容的提问来源于stack exchange,提问作者Pablo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:06:03