hello扫雷 2024-04-20 09:19 采纳率: 66.7%
浏览 11
已结题

数据库系统概论第五版

设有关系模式: 选修(姓名,专业,课程,任课教师,成绩)
假设:每个学生在一个专业学习;每门课程有一个任课教师;每个学生选修的每门课程只有一个成绩;姓名、课程无重名。

  1. 请写出选修关系中存在的基本函数依赖集和关系候选码
  2. 分析关系模式属于第几范式?为什么?
  3. 如果经常对该模式的关系进行增、删、改操作,会存在什么问题
  4. 请将选修关系模式分解为第3NF模式集
  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-20 09:19
    关注

    引自免费微信小程序:皆我百晓生

    当然,我们可以逐步解决这些问题。

    1. 基本函数依赖集和关系候选码

    在这个关系模式中,我们可以通过业务规则推断出一些基本函数依赖(FD):

    • 姓名 -> 专业 (因为每个学生在专业上是唯一的)
    • 姓名, 课程 -> 成绩 (因为每个学生对每门课程的成绩是唯一的)
    • 课程 -> 任课教师 (因为每门课程只有一个任课教师)

    因此,基本函数依赖集可以表示为:

    F = { (姓名, 专业), (姓名, 课程) -> 成绩, (课程) -> 任课教师 }
    

    候选键(Candidate Key)是指一个能唯一确定记录的属性集合。在这个关系中,可能的候选键有:

    • (姓名, 课程): 因为每个学生在每门课程上的组合是唯一的。
    • (专业, 课程): 如果我们假设每个专业的学生不会重复选择同一门课程,那么这个组合也是唯一的。

    2. 关系模式的范式分析

    根据给定的条件,我们可以判断此关系模式是否满足各范式:

    • 第一范式(1NF):要求数据项不可再分。在这个模式中,所有的属性都是原子的,所以满足1NF。
    • 第二范式(2NF):要求非主属性完全依赖于候选键。这里我们有两个候选键 (姓名, 课程)(专业, 课程)。对于这两个候选键,所有非主属性都完全依赖,所以满足2NF。
    • 第三范式(3NF):要求非主属性不传递依赖于候选键。在这里,没有非主属性之间存在依赖,所以也满足3NF。
    • BCNF(博科斯范式):要求任何非平凡的函数依赖 X->Y 中,X 必须包含候选键。由于我们的候选键包含了所有的属性,这个模式也满足 BCNF。

    所以,这个关系模式属于 BCNF 范式。

    3. 对增、删、改操作的问题

    尽管这个关系模式已经达到了较高的范式,但在实际应用中可能会遇到一些问题:

    • 更新异常:如果一个学生的专业发生了改变,但他的历史成绩仍保留了旧的专业信息,这可能导致数据不一致。
    • 插入异常:如果尝试插入一条新的选修记录,但是关联的学生或课程信息尚未在其他表中创建,就无法完成插入操作。
    • 删除异常:如果删除了一个学生的信息,与之相关的成绩也会被删除,即使这些成绩与其它学生有关。

    4. 分解为第三范式模式集

    为了减少上述问题,我们可以考虑将关系模式分解为更小的、满足3NF的子模式。一种可能的分解方式是:

    • 学生(姓名,专业)
    • 课程(课程,任课教师)
    • 选修(姓名,课程,成绩)

    这样,学生和课程表各自存储它们的信息,而选修表只存储选修关系。这样做的好处是,当修改学生或课程信息时,不会影响到选修表中的成绩,而且可以独立地插入、删除和更新各个表中的记录。

    这是对原始关系模式的分解,它确保了每个子模式都满足3NF。注意,这样的分解并不是唯一的,可以根据具体需求进行调整。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月28日
  • 已采纳回答 4月20日
  • 创建了问题 4月20日