在关系数据库中,函数依赖描述了属性之间的关联性。根据依赖关系中属性集合的包含情况,函数依赖可分为平凡函数依赖和非平凡函数依赖。
非平凡函数依赖:设X和Y是关系模式R(U)中属性集U的子集,如果X→Y成立,但Y不是X的子集 (Y ⊈ X),则称X→Y是非平凡的函数依赖。这意味着X的值唯一地决定了Y的值,且Y包含了X之外的信息。
平凡函数依赖:同样地,如果X→Y成立,但Y是X的子集 (Y ⊆ X),则称X→Y是平凡的函数依赖。这意味着X的值决定了Y的值,但Y的信息完全包含在X中,没有提供额外的信息。
举例:
在学生选课关系SC(Sno, Cno, Grade)中,
* (Sno, Cno) → Grade 是非平凡函数依赖,因为学生和课程共同决定了成绩,而成绩不是学生或课程信息的子集。
* (Sno, Cno) → Sno 和 (Sno, Cno) → Cno 都是平凡函数依赖,因为学生和课程信息已经包含了学生信息和课程信息。