📜  门| GATE CS 2018 |第 64 题

📅  最后修改于: 2021-09-25 05:02:07             🧑  作者: Mango

考虑以下四个关系模式。对于每个模式,列出了所有重要的功能依赖项,带下划线的属性是各自的主键。

  • 模式一:注册( rollno ,课程)
    字段“courses”是一个集合值属性,包含学生注册的课程集。
    非平凡的函数依赖
    rollno → 课程
  • 模式二:注册( rollno、coursid 、email)
    非平凡的函数依赖:
    rollno, courseid → 电子邮件
    电子邮件 → rollno
  • 模式三:注册( rollno、courseid 、marks、grade)
    非平凡的函数依赖:
    rollno, courseid, → 分数, 成绩
    分数→等级
  • 模式四:注册( rollno、courseid 、credit)
    非平凡的函数依赖:
    rollno, courseid → 学分
    课程编号 → 学分

上面哪一种关系模式在 3NF 中而不在 BCNF 中?

(A)模式一
(B)模式二
(C)模式三
(D)模式四答案:(乙)
解释:

  • 模式一:注册( rollno ,课程)
    字段“courses”是一个集合值属性,包含学生注册的课程集。
    非平凡的函数依赖
    rollno → 课程
    因为 rollno 是主键,所以这个关系在 BCNF 和 3 NF 中。
  • 模式二:注册( rollno、coursid 、email)
    非平凡的函数依赖:
    rollno, courseid → 电子邮件
    电子邮件 → rollno
    由于 { rollno, coursid } 是主键,所以 rollno 和 coursid 是主要属性。 email 是非主要属性。
    Functional depedency (FD) rollno, courseid → email在 BCNF 和 3NF 中,但 FD email → rollno违反了 BCNF 的规则,因为 email 不是超键。但它满足 3 NF 规则,因为 rollno 是素数属性。
    因此,总体而言,这种关系在 3 NF 中,但不在 BCNF 中。
  • 模式三:注册( rollno、courseid 、marks、grade)
    非平凡的函数依赖:
    rollno, courseid, → 分数, 等级
    分数→等级
    由于rollno,courseid是主键,所以rollno和courseid是主要属性,而marks和grade是非主要属性。
    FD rollno、courseid、→marks、grade满足 BCNF 以及 3 NF。
    FD标记 → 等级不满足 3 NF,因为 nither 标记是超级键,等级也不是主要属性。所以,也不能在 BCNF 中。
    因此,总体而言,这种关系既不属于 3 NF,也不属于 BCNF,但它不违反 2 NF 的规则,因此只能属于 2 NF。
  • 模式四:注册( rollno、courseid 、credit)
    非平凡的函数依赖:
    rollno, courseid → 学分
    课程编号 → 学分
    因为rollno, courseid是主键,所以 rollno 和 courseid 是主要属性,credit 是非主要属性。
    FD rollno, courseid → credit满足 BCNF 以及 3 NF。
    FD courseid → credit违反了 2 NF 的规则,所以不能在 2NF 中。
    因此,总体而言,这不在 2 NF、3 NF 和 BCNF 中。但它仅在 1 NF 中。

因此,只有模式-II 在 3 NF 中而不在 BCNF 中。
选项(B)是正确的。
这个问题的测验