尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

**一个关系模式完全可能有多个候选键*

**一个关系模式完全可能有多个候选键* 根据函数依赖集 $ F {A \to B,\ B \to C,\ C \to D} $求属性集 $ A^ $即 A 的闭包初始$ A^ {A} $由 $ A \to B $加入 B → $ A^ {A, B} $由 $ B \to C $因 B ∈ $ A^ $加入 C → $ A^ {A, B, C} $由 $ C \to D $因 C ∈ $ A^ $加入 D → $ A^ {A, B, C, D} $故 $ A^ {A, B, C, D} $对应选项D答案正确。我们来逐步计算属性集 $ AB^ $即 $ {A,B} $ 关于函数依赖集 $ F {AB \to C,\ C \to D,\ D \to E} $ 的闭包。步骤① 初始$ AB^ {A, B} $② 查找左部 ⊆ 当前闭包的函数依赖$ AB \to C $因 $ {A,B} \subseteq AB^ $可推出 $ C $ → 加入 $ C $得 $ AB^ {A,B,C} $③ 再查$ C \to D $因 $ C \in AB^ $加入 $ D $ → $ AB^ {A,B,C,D} $④ 再查$ D \to E $因 $ D \in AB^ $加入 $ E $ → $ AB^ {A,B,C,D,E} $⑤ 检查是否还能推导新属性剩余依赖均无左部被当前闭包完全包含无新依赖可触发算法终止。✅ 所以AB{A,B,C,D,E} AB^ \{A, B, C, D, E\}AB{A,B,C,D,E}即 $ AB $ 是该关系模式的一个超键不能仅凭$ AB^ {A,B,C,D,E} $ 就断定 $ AB $ 是候选键只能确定它是超键superkey要成为候选键candidate key还需验证其极小性minimality——即$ AB $ 的任何真子集的闭包都不等于全属性集。✅ 已满足条件超键性$ AB^ {A,B,C,D,E} $即能推出全部属性 → $ AB $ 是超键。❌ 还需验证极小性不可再缩减检查所有真子集$ A^ $若 $ A^ \neq {A,B,C,D,E} $则 $ A $ 不是超键$ B^ $同理若 $ B^ \neq {A,B,C,D,E} $则 $ B $ 不是超键。只有当$ A^ \subsetneq U $ 且 $ B^ \subsetneq U $其中 $ U {A,B,C,D,E} $时才能确认 $ AB $ 中无可删减即无更小的超键从而 $ AB $ 是候选键。⚠️ 补充说明若 $ A^ U $则 $ A $ 本身就是候选键$ AB $ 只是超键而非候选键若 $ A^ \neq U $ 但 $ B^ U $则 $ B $ 是候选键$ AB $ 不是若两者都不足则 $ AB $ 是候选键前提是它本身是最小的满足超键的集合。因此结论是$ AB^ U $ ⇒ $ AB $ 是超键是候选键 ⇔ 同时满足① $ AB^ U $② $ A^ \neq U $ 且 $ B^ \neq U $。一个关系模式完全可能有多个候选键。候选键是满足两个条件的极小属性集①超键性其闭包包含全部属性即能唯一确定元组②极小性其任意真子集都不具有超键性不可删减。只要存在多个互不包含、且各自极小的超键就存在多个候选键。✅经典示例设关系模式 $ R(A, B, C) $函数依赖集F{A→B, B→A, A→C, B→C} F \{A \to B,\ B \to A,\ A \to C,\ B \to C\}F{A→B,B→A,A→C,B→C}分析各单属性闭包$ A^ $由 $ A \to B $ 得 $ B $再由 $ B \to A已知、已知、已知、A \to C $ 得 $ C $ → $ A^ {A,B,C} U $$ B^ $由 $ B \to A $ 得 $ A $再由 $ A \to B、、、A \to C $ 得 $ C $ → $ B^ {A,B,C} U $$ C^ $无依赖以 $ C $ 为左部 → $ C^ {C} \neq U $再验证极小性$ A $ 和 $ B $ 均为单属性无真子集 → 自动极小$ AB $ 虽也是超键因 $ A \in AB $ 已足够但 $ AB $ 包含 $ A $ 和 $ B $不是极小 → 不是候选键✅ 因此$ A $ 和 $ B $ 都是候选键且互不相同、互不包含。其他常见例子学生选课表 $ R(\text{学号}, \text{课号}, \text{成绩}) $若规定学号课号→ 成绩且学号 → 院系、课号 → 课程名但无其他函数依赖则通常仅 $ {\text{学号}, \text{课号}} $ 是唯一候选键但若增加约束如“课号唯一标识一门课且每门课只由一位教师授课而教师工号 → 教师姓名”并设计为 $ R(\text{课号}, \text{教师工号}) $ 且 $ \text{课号} \leftrightarrow \text{教师工号} $双向依赖则 $ \text{课号} $ 和 $ \text{教师工号} $ 均为候选键。 总结多个候选键不仅可能而且在实际建模中常见如身份证号与学号均可唯一标识学生二者互不函数决定对方时可能同为候选键。
返回列表