1. 找出SLC中存在哪些函数依赖?
在关系模式SLC(Sno, Sname, Sdept, Loca, Cno, Grade)中,我们可以发现以下函数依赖:
- Sno -> Sname(学号决定姓名)
- Sno -> Sdept(学号决定所在系)
- Sno -> Loca(学号决定系地址)
- Sno -> Cno(学号决定课程号)
- Sno -> Grade(学号决定成绩)
- Cno -> Grade(课程号决定成绩)
2. 找出SLC的主属性和非主属性?
主属性:Sno, Sname, Sdept, Loca, Cno, Grade
非主属性:无
3. 分析 SLC 最高属于第几范式,并说明理由。如果没有达到第三范式,请拆分为满足第三范式的关系模式。
SLC关系模式最高属于第一范式,因为每个属性都是原子的,没有复合属性。但是,它没有达到第二范式和第三范式。原因如下:
- 第二范式要求一个关系模式中的所有非主属性都完全依赖于候选键(在这个例子中是Sno)。然而,我们可以看到Sdept、Loca和Cno都只依赖于Sno的一部分(即学号),而不是整个候选键。因此,SLC没有达到第二范式。
- 第三范式要求一个关系模式中的所有非主属性都不传递依赖于候选键。在这个例子中,我们可以看到Grade传递依赖于Sno(学号决定成绩),因此SLC没有达到第三范式。
为了满足第三范式,我们可以将SLC拆分为以下三个关系模式:
- 学生关系模式(Student):Sno(学号),Sname(姓名),Sdept(所在系)
- 系关系模式(Department):Sdept(所在系),Loca(系地址)
- 选课关系模式(Course_Selection):Sno(学号),Cno(课程号),Grade(成绩)
(内容由讯飞星火AI生成) |