我必须使用元组关系演算来解决查询,我只想知道我是否正确地完成了它们。我正在使用这个数据库:
EMPLOYEE: fname , minit , lname, ssn , bdate , address , sex , salary , superssn , dno
DEPARTMENT: dname dnumber , mgrssn , mgrstartdate
DEPT_LOCATIONS: dnumber , dlocation
PROJECT: pname , pnumber , plocation , dnum
WORKS_ON: essn , pno , hours
DEPENDENT: essn , dependent_name , sex , bdate , relationship
Q1:检索至少比公司薪酬最低的员工多10,000美元的员工姓名。
{e.Lname, e.Fname | EMPLOYEE(e) AND (∃b) (EMPLOYEE (b) AND e.Salary >=
10000 + b.Salary AND NOT (∃a) (EMPLOYEE(a) AND b.Salary > a.Salary))}
Q2:检索在所有员工中拥有薪水最高的员工的部门工作的所有员工的姓名。
{e.Lname, e.Fname | EMPLOYEE(e) AND (∃b) (EMPLOYEE (b) AND e.dno =
b.dno AND NOT(∃a)(EMPLOYEE(a) AND a.Salary > b.Salary))}
非常感谢任何帮助。
编辑:假设只有一名员工可以获得最高/最低薪水。
答案 0 :(得分:1)
猜测基本关系的含义,自然语言与微积分一致。从技术上讲,如果你没有给基表赋予含义(谓词),就无法找到答案。至于你是否通过正确的推理获得了正确的答案,你必须给你。 PS如果可以有多名薪水最高或最低的员工,则问题存在缺陷。