Запросы в корреляционном исчислении для сотрудников отдела и минимальная и максимальная зарплата?

Я должен решить запросы, используя корреляционное исчисление кортежей, и я просто хочу знать, правильно ли я их сделал. Я использую эту базу данных:

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 Вопросы некорректны, если может быть несколько сотрудников с самой высокой или самой низкой зарплатой.

Другие вопросы по тегам