首页 理论教育数据库技术与应用教程:关系代数检索实例

数据库技术与应用教程:关系代数检索实例

【摘要】:下面给出几个应用关系代数进行查询的实例。解题说明:该题的求解思路是在全部学号中去掉选修“C2”课程的学生学号,就得出没有选修课程号为“C2”课程的学生学号。应当特别注意的是,由于选择操作为元组操作,本题不能写为求既选修“C2”课程,又选修“C3”课程的学生学号。①除关系和被除关系都为选课表。通过选择运算,求出学号为“98002”学生所选课程的元组;通过投影运算,得出除关系的结构。

下面给出几个应用关系代数进行查询的实例。为了使读者明白解题思路,在每个例题后还附有简要的解题说明。下面的检索例子均基于学生选课库,学生选课库的关系模式为

学生(学号,姓名,性别,年龄,所在系);

课程(课程号,课程名,先行课);

选课(学号,课程号,成绩)。

【例2-4】求选修了课程号为“C2”课程的学生学号。

解题说明:该题中需要投影和选择两种操作;当需要投影和选择时,应先选择后投影。

【例2-5】求选修了课程号为“C2”课程的学生学号和姓名。

解题说明:该题通过选课表与学生表的自然连接,得出选课表中学号对应的姓名和其他学生信息。本题也可以按先选择,再连接的顺序安排操作。

【例2-6】求没有选修课程号为“C2”课程的学生学号。

解题说明:该题的求解思路是在全部学号中去掉选修“C2”课程的学生学号,就得出没有选修课程号为“C2”课程的学生学号。由于在减、交、并运算时,参加运算的关系应结构一致,故应当先投影,再执行减操作。应当特别注意的是,由于选择操作为元组操作,本题不能写为

【例2-7】求既选修“C2”课程,又选修“C3”课程的学生学号。

解题说明:本题采用先求出选修“C2”课程的学生,再求选修“C3”课程的学生,最后使用了交运算的方法求解,交运算的结果为既选修“C2”课程又选修“C3”课程的学生。由于选择运算为元组运算,在同一元组中课程号不可能既是“C2”同时又是“C3”,所以该题不能写为(www.chuimin.cn)

【例2-8】求选修课程号为“C2”或“C3”课程的学生学号。

解题说明:该题可使用并运算,也可以使用选择条件中的或运算表示。

【例2-9】求选修了全部课程的学生学号。

解题说明:除法运算为包含运算,该题的含义是求学号,并要求这些学号所对应的课程号中包括全部课程的课程号。

【例2-10】一个学号为“98002”的学生所学过的所有课程可能也被其他学生选修,求这些学生的学号和姓名。(求至少选修了学号为“98002”的学生所学过的所有课程的学生的学号和姓名)

该题有几个值得注意的问题。

①除关系和被除关系都为选课表。

②对除关系的处理方法是先选择后投影。通过选择运算,求出学号为“98002”学生所选课程的元组;通过投影运算,得出除关系的结构。这里,对除关系的投影是必需的。如果不进行投影运算,除关系就会与被除关系的结构一样,将会产生无结果集的问题。

③对被除关系的投影运算后,该题除运算的结果关系中仅有学号属性。