题目
(1)假设有一个数据库包含以下关系模式:-|||-Teacher( Tno Tname,Tage,Tsex) 主码下面加了下划线×/-|||-Department( Dno Dname,Tno)-|||-Work( Tno Dno,Year,Salary)-|||-教师表Teacher 由教师代码(Tno)、教师名字(Tname)、教师年龄(Tage)、教师性别-|||-(Tsex)组成。-|||-系表Department 由系代码(Dno)、系名(Dname)、系主任代码(Tno)组成。-|||-工作表由教师代码(Tno)、系代码(Dno)、入职年份(Year)、工资(Salary)组成。-|||-使用关系代数表示每个查询:-|||-①列出工资超过5000的教师的不同年龄;-|||-②查找不在计算机系工作的教师代码;-|||-③系主任T1管辖范围内的所有教师姓名;-|||-④假设对关系r,p (r)表示得到别名为x的一个相同的关系,系里的每个教师都有工-|||-资,列出比D1系的所有教师工资都高的教师代码。

题目解答
答案

解析
步骤 1:列出工资超过5000的教师的不同年龄
- 首先,从工作表(Work)中选择工资(Salary)大于5000的记录。
- 然后,将这些记录与教师表(Teacher)进行连接,以获取教师的年龄(Tage)。
- 最后,使用投影操作(π)来提取不同的年龄。
步骤 2:查找不在计算机系工作的教师代码
- 首先,从系表(Department)中选择系名(Dname)为“计算机系”的记录。
- 然后,将这些记录与工作表(Work)进行连接,以获取在计算机系工作的教师代码(Tno)。
- 最后,使用差集操作(-)来获取不在计算机系工作的教师代码。
步骤 3:系主任T1管辖范围内的所有教师姓名
- 首先,从系表(Department)中选择系主任代码(Tno)为T1的记录。
- 然后,将这些记录与工作表(Work)进行连接,以获取在T1管辖范围内的教师代码(Tno)。
- 最后,使用投影操作(π)来提取教师的名字(Tname)。
步骤 4:列出比D1系的所有教师工资都高的教师代码
- 首先,从工作表(Work)中选择系代码(Dno)为D1的记录。
- 然后,将这些记录与工作表(Work)进行连接,以获取比D1系的所有教师工资都高的教师代码(Tno)。
- 最后,使用投影操作(π)来提取教师代码(Tno)。
- 首先,从工作表(Work)中选择工资(Salary)大于5000的记录。
- 然后,将这些记录与教师表(Teacher)进行连接,以获取教师的年龄(Tage)。
- 最后,使用投影操作(π)来提取不同的年龄。
步骤 2:查找不在计算机系工作的教师代码
- 首先,从系表(Department)中选择系名(Dname)为“计算机系”的记录。
- 然后,将这些记录与工作表(Work)进行连接,以获取在计算机系工作的教师代码(Tno)。
- 最后,使用差集操作(-)来获取不在计算机系工作的教师代码。
步骤 3:系主任T1管辖范围内的所有教师姓名
- 首先,从系表(Department)中选择系主任代码(Tno)为T1的记录。
- 然后,将这些记录与工作表(Work)进行连接,以获取在T1管辖范围内的教师代码(Tno)。
- 最后,使用投影操作(π)来提取教师的名字(Tname)。
步骤 4:列出比D1系的所有教师工资都高的教师代码
- 首先,从工作表(Work)中选择系代码(Dno)为D1的记录。
- 然后,将这些记录与工作表(Work)进行连接,以获取比D1系的所有教师工资都高的教师代码(Tno)。
- 最后,使用投影操作(π)来提取教师代码(Tno)。