题目
1.关系模式Student(Sno, Sname, Cno, Cname, Grade) 的属性分别表示学号、学生姓名、课程号、课程名、成绩。请将该模式分解为3NF。
1.关系模式Student(Sno, Sname, Cno, Cname, Grade) 的属性分别表示学号、学生姓名、课程号、课程名、成绩。请将该模式分解为3NF。
题目解答
答案
Student(sno, sname) Course(cno, cname) St_Co(sno, cno, grade)
解析
步骤 1:确定函数依赖
首先,我们需要确定关系模式Student(Sno, Sname, Cno, Cname, Grade)中的函数依赖。根据属性的含义,我们可以推断出以下函数依赖:
- Sno → Sname
- Cno → Cname
- (Sno, Cno) → Grade
步骤 2:确定候选键
根据函数依赖,我们可以确定关系模式Student的候选键为(Sno, Cno)。
步骤 3:分解为3NF
为了将关系模式分解为3NF,我们需要消除非主属性对候选键的部分函数依赖和传递函数依赖。根据函数依赖,我们可以将关系模式分解为以下三个关系模式:
- Student(Sno, Sname):消除Sname对(Sno, Cno)的部分函数依赖。
- Course(Cno, Cname):消除Cname对(Sno, Cno)的部分函数依赖。
- St_Co(Sno, Cno, Grade):保持(Sno, Cno)对Grade的完全函数依赖。
首先,我们需要确定关系模式Student(Sno, Sname, Cno, Cname, Grade)中的函数依赖。根据属性的含义,我们可以推断出以下函数依赖:
- Sno → Sname
- Cno → Cname
- (Sno, Cno) → Grade
步骤 2:确定候选键
根据函数依赖,我们可以确定关系模式Student的候选键为(Sno, Cno)。
步骤 3:分解为3NF
为了将关系模式分解为3NF,我们需要消除非主属性对候选键的部分函数依赖和传递函数依赖。根据函数依赖,我们可以将关系模式分解为以下三个关系模式:
- Student(Sno, Sname):消除Sname对(Sno, Cno)的部分函数依赖。
- Course(Cno, Cname):消除Cname对(Sno, Cno)的部分函数依赖。
- St_Co(Sno, Cno, Grade):保持(Sno, Cno)对Grade的完全函数依赖。