查看更多当前 - 案例分析 - 数据库系统
简单
案例题
2024年5月第3题
#第二版教材
#必须掌握

在某大型大学的教务管理系统中,学校需要管理大量的教学数据。包括教师信息、学生信息、课程信息、学生选课情况等。为了提高系统的查询效率并保证数据一致性,开发团队采用了数据库规范化技术,进行了一系列的范式设计,以消除数据冗余、避免更新异常、插入异常和删除异常等问题。

  • 教师信息(Teacher)

    • 属性:教师ID(TID)、教师姓名(TName)、教师所在院系(Department)
    • 主键:教师ID(TID)
    • 函数依赖:TID → TName, Department
  • 学生信息(Student)

    • 属性:学生ID(SID)、学生姓名(SName)、学生出生日期(DOB)
    • 主键:学生ID(SID)
    • 函数依赖:SID → SName, DOB
  • 课程信息(Course)

    • 属性:课程ID(CID)、课程名称(CName)、学分(Credits)
    • 主键:课程ID(CID)
    • 函数依赖:CID → CName, Credits
  • 学生选课情况(Enrollment)

    • 属性:学生ID(SID)、课程ID(CID)、教工 ID(TID)
    • 主键:学生ID(SID)、课程ID(CID);学生ID(SID)、教工 ID(TID)
    • 函数依赖:SID, CID → TID,SID, TID → CID,TID → CID
分值(8分

请问这四种关系是否满足BCNF,如果不满足用什么方式满足。

参考答案
  • 教师信息(Teacher)

    • 属性:教师ID(TID)、教师姓名(TName)、教师所在院系(Department)
    • 主键:教师ID(TID)
    • 函数依赖:TID → TName, Department
      这个表满足BCNF,因为左侧的属性(TID)是主键,且函数依赖是基于主键的,没有任何非主键属性依赖于其他非主键属性。
  • 学生信息(Student)

    • 属性:学生ID(SID)、学生姓名(SName)、学生出生日期(DOB)
    • 主键:学生ID(SID)
    • 函数依赖:SID → SName, DOB
      同样,这个表满足BCNF,因为左侧的属性(SID)是主键。
  • 课程信息(Course)

    • 属性:课程ID(CID)、课程名称(CName)、学分(Credits)
    • 主键:课程ID(CID)
    • 函数依赖:CID → CName, Credits
      这个表也满足BCNF,因为左侧的属性(CID)是主键。
  • 学生选课情况(Enrollment)

    • 属性:学生ID(SID)、课程ID(CID)、教师ID(TID)
    • 主键:学生ID(SID)、课程ID(CID);学生ID(SID)、教师ID(TID)
    • 函数依赖:SID, CID → TID | SID, TID → CID
      问题点:
    • 虽然(SID, CID)和(SID, TID)是候选键,但存在函数依赖 TID → CID,而TID不是候选键,这意味着它违反了BCNF的规则。
    • 为了满足BCNF,可以将表拆分为两个:
      • Enrollment:(SID, TID)作为主键,属性为 SID 和 TID。
      • Teaching:(TID)作为主键,属性为 TID 和 CID。

这样,TID → CID 变成了一个基于主键的依赖,满足BCNF。

凯恩解析

这里就要用到凯恩提到的判断方法。若一个关系为R(U),它是满足第一范式的,当R 中不存在任何属性对候选码的传递函数依赖时,则称R 符合 BCNF,即R∈BCNF。这个书本写的很抽象。翻看别的定义也是如此。所以直接看例子理解。BCNF一定是3NF,

这个比较直观,因为直接看它的定义,包含了对3NF的定义。一个判断的简单方法是在BCNF范式中,关系模式中任何函数依赖的左侧必须是码,不能存在非码的属性。每名教师只教授一门课程,每门课程由若干名教师教授,若某一学生选定某门课程,就确定了一名教师;同样地,某名学生选修了某名教师就确定了所选课程的名称。

(教工号,学号),(学号,课程号)可以作为主键
但是由于存在教工号→课程号。
推论判断:因为教工号不是码,所以不是BCNF范式

(如何规范化)可将授课分解为两个关系模式,即(学号,教工号)和(教工号,课程号),它们之中不存在任何属性对候选码的部分函数依赖和传递函数依赖,所以符合 Boyce-Codd范式。

联系我们
隐私协议
用户协议
微信公众号
知乎
小红书
浙ICP备2021029036号
@2022-2026
嘉兴市安芯网络科技有限公司 版权所有