题目
针对上机实践要求中数据库stuhl的三个关系:s(sno,sname,sex,sbirth,smajor),其中字段依次表示 学号、姓名、性别、出生日期、主修专业;c(cno,cname,ccredit,cpno,teacher),其中字段依次表示 课程号、课程名、学分、先修课、授课教师;sc(sno,cno,grade),其中字段依次表示 学号、课程号、成绩;请用关系代数[1]表达式表达以下的查询:(1) 查询主修专业为计算机科学与技术的学生,关系代数表达式为( )。(2) 查询主修专业为计算机科学与技术以及主修专业为信息安全[2]的学生,关系代数表达式为( )。(3) 查询学生的姓名和专业,关系代数表达式为( )。(4) 查询出生日期在2000-1-1后的男生的学号和姓名,关系代数表达式为( )。(5) 查询姓名为杨晓东的老师所授课的课程号、课程名,关系代数表达式为( )。(6) 查询李勇同学选修的所有课程的课程号、成绩,关系代数表达式为( )连接条件为( )。(7) 查询所有选课同学的选课信息,包含:学号、姓名、课程号、课程名、成绩,关系代数表达式为( );关系表s和sc连接条件为( );关系表c和sc连接条件为( )。(8) 查询所有修了“数据结构”成绩在90及以上的学生学号、姓名、课程名、成绩,关系代数表达式为( );关系表s和sc连接条件为( );关系表c和sc连接条件为( )。(9) 查询没有选课记录的学生学号,关系代数表达式为( )。
针对上机实践要求中数据库stuhl的三个关系: s(sno,sname,sex,sbirth,smajor),其中字段依次表示 学号、姓名、性别、出生日期、主修专业; c(cno,cname,ccredit,cpno,teacher),其中字段依次表示 课程号、课程名、学分、先修课、授课教师; sc(sno,cno,grade),其中字段依次表示 学号、课程号、成绩; 请用关系代数[1]表达式表达以下的查询: (1) 查询主修专业为计算机科学与技术的学生,关系代数表达式为( )。 (2) 查询主修专业为计算机科学与技术以及主修专业为信息安全[2]的学生,关系代数表达式为( )。 (3) 查询学生的姓名和专业,关系代数表达式为( )。 (4) 查询出生日期在2000-1-1后的男生的学号和姓名,关系代数表达式为( )。 (5) 查询姓名为杨晓东的老师所授课的课程号、课程名,关系代数表达式为( )。 (6) 查询李勇同学选修的所有课程的课程号、成绩,关系代数表达式为( )连接条件为( )。 (7) 查询所有选课同学的选课信息,包含:学号、姓名、课程号、课程名、成绩,关系代数表达式为( );关系表s和sc连接条件为( );关系表c和sc连接条件为( )。 (8) 查询所有修了“数据结构”成绩在90及以上的学生学号、姓名、课程名、成绩,关系代数表达式为( );关系表s和sc连接条件为( );关系表c和sc连接条件为( )。 (9) 查询没有选课记录的学生学号,关系代数表达式为( )。
题目解答
答案
(1) $\sigma_{smajor = '计算机科学与技术'}(S)$
(2) $\sigma_{smajor = '计算机科学与技术' \lor smajor = '信息安全'}(S)$ 或 $\sigma_{smajor \in \{'计算机科学与技术', '信息安全'\}}(S)$
(3) $\pi_{sname, smajor}(S)$
(4) $\pi_{sno, sname}(\sigma_{sbirth > '2000-1-1' \land sex = '男'}(S))$
(5) $\pi_{cno, cname}(\sigma_{teacher = '杨晓东'}(C))$
(6) $\pi_{cno, grade}(\sigma_{sname = '李勇'}(S) \bowtie SC)$ 或 $\pi_{o, SC.grade}(\sigma_{S.sname = '李勇'}(S \bowtie SC))$
连接条件:$S.sno = SC.sno$
(7) $\pi_{S.sno, S.sname, o, ame, SC.grade}(S \bowtie SC \bowtie C)$
连接条件:$S.sno = SC.sno$,$o = o$
(8) $\pi_{S.sno, S.sname, ame, SC.grade}(\sigma_{ame = '数据结构' \land SC.grade \geq 90}(S \bowtie SC \bowtie C))$
连接条件:$S.sno = SC.sno$,$o = o$
(9) $\pi_{sno}(S) - \pi_{sno}(SC)$