关系数据库系统设计与查询实践

版权申诉
0 下载量 76 浏览量 更新于2024-07-01 收藏 115KB DOC 举报
数据库系统大题.doc 在本篇文章中,我们将对数据库系统的大题进行详细的讲解,涵盖ER图的设计、关系代数表达式的应用、查询语句的解释等方面的内容。 ER图设计 在ER图中,我们需要定义三个实体:学生(S)、课程(C)和选课关系(SC)。每个学生可以选修多门课,每门课有多个学生选修;每个教师可以讲授多门课,每门课只有一个教师讲授。 ER图如下所示: * 学生(S) + 属性:S#、SNAME、AGE、SEX * 课程(C) + 属性:C#、CNAME、TEACHER * 选课关系(SC) + 属性:S#、C#、GRADE 关系代数表达式 在关系代数中,我们可以使用关系代数表达式来描述查询语句。下面是对应于每个查询语句的关系代数表达式: 1. 检索“程军”老师所授课程的课程号(C#)和课程名(CNAME): ∏C#,CNAME(σTEACHER=‘程军’(C)) 2. 检索年龄大于21的男学生学号(S#)和(SNAME): ∏S#,SNAME(σAGE>21∧SEX=”男”(S)) 3. 检索至少选修“程军”老师所授全部课程的学生(SNAME): ∏SNAME{s[∏S#,C#(sc)÷∏C#(σTEACHER=‘程军’(C))] 4. 检索”强”同学不学课程的课程号(C#): ∏C#(C)-∏C#(σSNAME=‘强’(S)SC) 5. 检索至少选修两门课程的学生学号(S#): ∏S#(σ[1]=[4]∧[2]≠[5](SC×SC)) 6. 检索全部学生都选修的课程的课程号(C#)和课程名(CNAME): ∏C#,CNAME(C(∏S#,C#(sc)÷∏S#(S))) 7. 检索选修课程包含“程军”老师所授课程之一的学生学号(S#): ∏S#(SC∏C#(σTEACHER=‘程军’(C))) 8. 检索选修课程号为k1和k5的学生学号(S#): ∏S#,C#(sc)÷∏C#(σC#=’k1’∨C#=’k5’(C)) 9. 检索选修全部课程的学生(SNAME): ∏SNAME{s[∏S#,C#(sc)÷∏C#(C)]} 10. 检索选修课程包含学号为2的学生所修课程的学生学号(S#): ∏S#,C#(sc)÷∏C#(σS#=’2’(SC)) 11. 检索选修课程名为“C语言”的学生学号(S#)和(SNAME): ∏S#,SNAME{s[∏S#(SCσCNAME=‘C语言’(C))] 关系R和S 在关系R和S中,我们可以使用关系代数表达式来计算R÷S。 |R| |A|B|C|D| |a|b|c|d| 在这里,我们可以使用关系代数表达式来描述R÷S的计算过程。 本篇文章对数据库系统的大题进行了详细的讲解,涵盖ER图的设计、关系代数表达式的应用、查询语句的解释等方面的内容。