1)有描述学期学生成绩关系模式Student(MNO,MNAME,SNO,SNAME,CNO,CNAME,TNO,TNAME,GRADE),分别表示专业号,专业名,学号,姓名,课程号,课程名,教师号,教师名及成绩,存在的语义如下所示:每个专业有唯一的专业号,每个学生有唯一的学号,每个教师有唯一的教师号,每个开课课程有唯一的课程号,名字都可能重复。每个专业有多名学生,每个学生只能属于一个专业;每个专业有多个老师,每个老师只能属于一个专业;每个老师可以教授多门课程,每门开课课程只能一个老师教授;每个学生选修一门课程有唯一的成绩,对应唯一的老师。 要求: (1)写出该模式的最小函数依赖集. (2)写出该模式最高属于几范式?该模式存在的问题 (3)若不属于3NF,请分解为3NF。 (4)验证分解的无损与保函。
时间: 2024-01-02 22:03:04 浏览: 42
(1)最小函数依赖集:{MNO → MNAME, SNO → SNAME, CNO → CNAME, TNO → TNAME, MNOSNO → TNO, TNOCNO → CNAME, SNOCNO → TNO, SNOCNO → GRADE}
(2)该模式最高属于第三范式(3NF)。该模式存在问题:存在传递依赖,即MNOSNO → TNAME,SNOCNO → TNAME,但是TNAME不是候选键的一部分。
(3)分解为3NF。将原模式分解为以下三个关系模式:
- 学生信息关系模式StudentInfo(SNO, SNAME, MNO, MNAME)
- 课程信息关系模式CourseInfo(CNO, CNAME, TNO, TNAME)
- 学生成绩关系模式Grade(SNO, CNO, GRADE)
(4)验证分解的无损与保函。可以通过以下步骤进行验证:
- 验证无损失合并:将分解后的三个关系模式进行自然连接,得到的结果应该与原来的模式相同。
- 验证保函:检查分解后的三个关系模式是否能够覆盖原来的模式,即是否能够推出原来模式中所有的函数依赖。可以发现,分解出的三个关系模式都能够推出原来模式中的函数依赖,因此分解是保函的。