数据库原理关系代数两道经典题目

题目一

设数据库中有三个基本表:

S(SNo(学号),SName(姓名),SSex(性别),SPro(专业方向))

SC(SNo(学号),CNo(课程号),Grade(成绩))

C(CNo(课程号),CName(课程名),CPre(先行课),CCredit(学分))

试用关系代数表达式表示下列查询语句:

1.找出选修网络方向女同学名单

σSPro =”网络”∧ SSex =”女”(S)

2.求选修 15164 课程的学生姓名和专业方向

∏SName, SPro(σCNo=”15164”(S⋈SC))

3.求选修数据库原理与应用课程的学生姓名

∏SName(σCName=”数据库原理与应用”(C)⋈SC⋈S)  

4.同时选修人工智能及编译技术的学生名单

S⋈(∏SName, CNo(SC)÷∏CNo(σCName =”人工智能”∨ CName=”编译技术”(C)))

∏Smame,CNo(S⋈SC)÷∏CNo(σCName =”人工智能”∨ CName=”编译技术”(c))

5.没有被任何人选修的课程名

∏CName(C⋈(∏CNo(C)-∏CNo(SC)))

∏cname(C)-∏cname(C⋈SC)

6.没有选修任何课程的学生性别和姓名

∏SName, SSex(S⋈(∏SNo(S)-∏SNo(SC)))

∏SName, SSex(S)-∏SName, SSex(S⋈SC)

7.至少选修了 002 号学生选修的全部课程的学生学号

∏SNo,CNo(SC)÷∏CNo(σSno=”002”(SC))

∏Sno((∏Sname,CNo(S⋈SC)÷∏CNo(σSNo=”002”(SC))⋈S))

8.求所有课程被选修的情况,列出课程号、课程名、先行课、学分、学号和成绩

CSC

9.求每个学生没有选修的课程,列出学号、课程号

∏SNo, Cno(S×C)-∏SNo, Cno(SC)

题目二

设学生参加科研训练项目的数据库包含如下关系模式:

学院(D)(学院代码 Dno,学院名称 Dname)

学生(S)(学号 Sno,姓名 Sname,性别 Sex,联系方式 Tel,学院代码 Dno)

项目(P)(项目编号 Pno,项目名 Pname,立项年份 Year,负责人 Sno,级别 level, 资助金额 Funding,学院代码 Dno)

参与(S_P)(学号 Sno,项目编号 Pno,承担任务 task)

其中,项目负责人是负责该项目的学生学号。

1.查询参与过“旅行足记”项目的学生学号和姓名;

 ∏S.SNo,S.SName(σP.PName=”旅行足迹”(S⋈S_P⋈P))

2.查询至少参与过两个项目的学生姓名和联系方式;

∏S.SName,S.Tel((∏S_P.SNo(σ1=4ᴧ2≠5(S_P⋈S_P))⋈S)

3.查询没有参与过任何项目的学生学号和姓名;

∏S.SNo,S.SName(S)-∏S.SNo,S.SName(S⋈S_P)

4.查询参与过计算机学院 2016年立项的所有国家级项目的学生姓名和联系方

∏S.SName,S.Tel((∏S_P.SNo,S_P.PNo(S_P)÷∏P.PNo(σP.level=”国家级”ᴧP.year=”2016”ᴧD.Dname=”计算机”(P⋈D)))⋈S)

5.查询和汤浩在同一个学院学习的学生学号和姓名

∏1,2(σ7=”汤浩” ᴧ5=10(SXS))

猜你喜欢

转载自blog.csdn.net/qq_53162179/article/details/124778303