单选题
设学生选课关系模式为SC(Sno,(2no,Grade),其中,Sno为学号,Cno为课程号,Grade为成绩,SQL查询语句如下: SELECT Sno FROM SC SCX WHERE NOT EXISTS ( SELECT * FROM SC SCY WHERE SCY.Sno='1042' AND NOT EXISTS ( SELECT * FROM SC SCZ WHERE SCZ.Sno=SCX.Sno AND SCZ.Cno=SCY.Cno)); 与该查询等价的元组演算表达式为tl (38) (SC(u)∧∧SC(v)∧ (39) ∧t[1]=u[1]))。
单选题
【正确答案】
B
【答案解析】
单选题
【正确答案】
A
【答案解析】[要点解析] 这是一题要求读者掌握关系代数知识的综合分析题。根据试题中给出的SQL语句可知,该SQL语句实现的功能是:查询至少选修了学生“1042”选修的全部课程的学生号码。因为在SELECT查询中,没有逻辑蕴含,但可以利用谓词演算将一个逻辑蕴含的谓词等价地转换,其形式为:[*]。 查询学号为X的学生,对所有的课程Y,只要1042学生选修了课程Y,则X也选修了Y。如果用p表示谓词“学生1042选修了课程Y”,用q表示谓词“学生x也选修了Y”,则该查询可表示为:任给一门1042选修的课程Y,学生X也选修了,其形式化表示为:[*](使用逻辑蕴含)。 若使用双重否定:“不存在这样的课程Y,学生1042选修了Y,而学生x没有选修”,则式“[*]”可转换为:[*]。其相应的SQL查询语句表示如下。 SELECT Sno FROM SC SCX WHERE NOT EXISTS ( SELECT * FROM SC SCY WHERE SCY.Sno='1042' AND NOT EXISTS ( SELECT * FROM SC SCZ WHERE SCZ.Sno=SCX.Sno AND SCZ.Cno=SCY.Cno)); 在本试题中,要求写出与SELECT查询等价的元组演算表达式。其解答步骤如下: (1)要在SC关系中存在一个学生X,故需要一个元组变量u(存在量词)等价于SCX; (2)要在SC关系中找学号='1042'所选的任意一门课程,故需设置一个元组变量v(全程量词)等价于SCY; ③要在SC表中只要1042所选的任意一门课程X学生是否也选修了(即能找到X学生选修了相关课程),故需设置一个元组变量w(存在量词)。 对于(1)空缺处的选项A“[*]”,意为只要学生X选了1042学生所选的一门课条件为真,因此选项A是错误的;选项B是正确的答案,因为“[*]”意为只要学生x选了1042学生所选的任意一门课条件为真;由于“[*]”意为任给一个学生选了1042学生所选的一门课条件为真,因此选项C是错误的;选项D是错误的,因为“[*]”意为任给一个学生选了1042学生所选的任意一门课条件为真。 试题中所给出的元组表达式中,t和u代表SCX中的元组,v代表SCY中的元组,w代表SCZ中的元组。(2)空缺处的选项A“[*]”,意为只要1042学生所选的一门课必然蕴涵学生X选了,因此选项A是正确的答案。