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

非主属性依赖部分主键与非主属性组合时数据表是否符合3NF

问题:存在非主属性依赖于部分主键与非主属性的组合时,数据表是否属于3NF?

相关数据表说明

Students表

SIDSNAME
1Adams
2Jones
3Smith
4Baker

Teachers表

TIDTNAME
60192Howser
45869Langley

Classes表

CIDCNAME
IS318Database
IS301Java

Student info表

该表使用SID与CID作为复合主键,表结构与数据如下:

SIDCIDTIDGrade
1IS31860192A
1IS30145869B
2IS31860192A
3IS31860192B
4IS30145869A
4IS31860192A

已知该表满足函数依赖:(SID,CID) → Grade、(SID,TID) → Grade,请问该表是否符合3NF要求?


回答

该表不符合3NF要求,甚至没有达到2NF的标准

  • 先明确两个基础范式的核心要求:
    2NF要求不存在非主属性对主键的部分函数依赖;3NF需要先满足2NF,同时不存在非主属性对主键的传递函数依赖。
  • 该表的问题很明确:
    从业务常识和给出的样例数据很容易看出来,CID可以唯一确定TID,也就是同一个课程的授课老师是固定的,即存在函数依赖CID → TID。此时非主属性TID仅依赖复合主键(SID,CID)中的CID字段,属于典型的非主属性对主键的部分依赖,直接就不满足2NF的要求,自然也不可能符合3NF的规范。
  • 你提到的(SID,TID) → Grade属于Grade的多路径决定关系,并不会消除上述的部分依赖问题,不影响最终判断。

如果要调整为符合3NF的结构,可以对表做拆分:

  1. 成绩表:字段为SID、CID、Grade,主键为(SID,CID)
  2. 课程教师映射表:字段为CID、TID,主键为CID
    拆分后的两个表都不存在部分依赖和传递依赖,符合3NF要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:36:07