Запросы в корреляционном исчислении для сотрудников отдела и минимальная и максимальная зарплата?
Я должен решить запросы, используя корреляционное исчисление кортежей, и я просто хочу знать, правильно ли я их сделал. Я использую эту базу данных:
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: Получить имена сотрудников, которые зарабатывают как минимум на 10000 долларов больше, чем сотрудник, которому меньше всего платят в Компании.
{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))}
Любая помощь будет высоко ценится.
изменить: предположим, что только один сотрудник может иметь самую высокую / самую низкую зарплату.
1 ответ
Догадываясь о смысле базовых отношений, естественный язык согласуется с исчислением. Nb технически ответ не может быть найден, если вы не дадите значения (предикаты) для базовых таблиц. Что касается того, получили ли вы правильные ответы с помощью правильных рассуждений, вам придется дать свои. PS Вопросы некорректны, если может быть несколько сотрудников с самой высокой или самой низкой зарплатой.