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

关系R(A,B,C,D,E)候选键求解及3NF分解技术咨询

关系模式R的候选键求解、依赖校验与3NF分解

已知前提

关系模式为R(A,B,C,D,E),给定显式函数依赖如下:

  • A→B,C
  • B→D

一、候选键求解

首先对属性分类:

  • L类属性:仅出现在函数依赖左部的属性,即A、E
  • R类属性:仅出现在函数依赖右部的属性,即C、D
  • LR类属性:同时出现在函数依赖左右部的属性,即B
  • N类属性:未出现在任何函数依赖中的属性:无

根据候选键判定规则,L类属性必须全部出现在候选键中,我们计算属性集的闭包(AE)+:

  1. 初始值:(AE)+ = {A,E}
  2. 应用依赖A→B,C,加入B、C,更新为{A,B,C,E}
  3. 应用依赖B→D,加入D,更新为{A,B,C,D,E},已覆盖R的所有属性

因此该关系模式的唯一候选键为AE。

二、函数依赖校验

不存在未被覆盖的“缺失依赖”,基于Armstrong公理,可以从给定的两个显式依赖推导出所有成立的隐式依赖:

  • 自反律导出的所有平凡依赖(例如A→A、AB→A等,所有平凡依赖均自动成立)
  • 传递律导出:A→D(由A→B、B→D推导)
  • 合并规则导出:A→B,C,D
  • 增广律导出的所有扩展依赖(例如AE→任意属性、AB→D等)

如果没有额外业务规则约束,上述就是R上全部成立的函数依赖,无需补充额外的显式依赖。

三、到3NF的分解

我们采用既保持函数依赖、又满足无损连接性的3NF分解方案,步骤如下:

  1. 先将给定的函数依赖集转化为极小依赖集:现有依赖拆分为单属性右部后为{A→B, A→C, B→D},不存在冗余左部属性和冗余依赖,已经是极小依赖集
  2. 将每个独立的函数依赖对应为一个关系模式:
    • 由A→B,C 得到 R1(A,B,C),主键为A
    • 由B→D 得到 R2(B,D),主键为B
  3. 检查现有模式是否包含候选键:当前两个模式都不包含候选键AE,因此新增模式R3(A,E),主键为AE

最终满足3NF要求的分解结果为:R1(A,B,C)、R2(B,D)、R3(A,E)


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:57:00