HW-1 Warmup - Trainstudents.com

Lecture 1
Relational Algebra and Relational Calculus
Unary Relational Operations
► SELECT
Operation
 To select the EMPLOYEE tuples whose department number is four
DNO = 4 (EMPLOYEE)
 To select the EMPLOYEE tuples whose salary is greater than $30,000
SALARY > 30,000 (EMPLOYEE)
Unary Relational Operations
► PROJECT
Operation
 To list each employee’s first and last name and
salary, the following is used
LNAME, FNAME,SALARY(EMPLOYEE)
Show the full name and salary of every
employee.
Show the gender and salary of every
employee.
Select the gender and salary of all
Select employees in dep. 4 with salaries
employees in dep. 4 with salaries
exceeding 25000 or in dep. 5 with
exceeding 25000 or in dep. 5 with
salaries exceeding 30000
salaries exceeding 30000
Unary Relational Operations
►
To retrieve the first name, last name, and salary of all employees
who work in department 5, we must apply select and project
operations.
 We can write a single relational algebra expression as follows:
► FNAME, LNAME, SALARY(
DNO=5
(EMPLOYEE))
 OR We can explicitly show the sequence of operations, giving a name to
each intermediate relation:
► TEMP   DNO=5(EMPLOYEE)
► R   FNAME, LNAME, SALARY (TEMP)
Slide 6- 9
Operations From Set Theorys
► CARTESIAN
(or cross product) Operation
 Find the cross product between female employees
(Fname, LName and SSN) and dependents
  SEX=’F’(EMPLOYEE)
►EMPNAMES   FNAME, LNAME,SSN (FEMALE_EMPS)
►EMP_DEPENDENTS  EMPNAMES x DEPENDENT
►FEMALE_EMPS
The rest are
spurious
To get
employees’
dependant
s, SSNs
must
match
Binary Relational Operations
►
Retrieve the manager of each department
 we need to combine each DEPARTMENT tuple with the EMPLOYEE tuple
whose SSN value matches the MGRSSN value in the department tuple
 We do this by using the join
operation
►
DEPT_MGR  DEPARTMENT
MGRSSN=SSN
EMPLOYEE
Binary Relational Operations
► Get
the locations of every department
 DEPT_LOCS  DEPARTMENT
DEPT_LOCATIONS
DNUMBER=DNUMBER
Examples of Relational Algebra Queries


Q1: Retrieve the names and addresses of all employees
who work for the ‘Research’ department

RESEARCH_DEPT   DNAME=‘Research’ (DEPARTMENT)

RESEARCH_EMPS  (RESEARCH_DEPT

RESULT   FNAME, LNAME, ADDRESS (RESEARCH_EMPS)
DNUMBER= DNOEMPLOYEE
EMPLOYEE)
Q2: For every project located in ‘Stafford’, list the project number
and the controlling department name

STAFFORD_PROJS   PLOCATION=‘STAFFORD’ (PROJECT)

CONTR_DEPT  (STAFFORD_PROJS

RESULT   PNUMBER, DNAME (RESEARCH_EMPS)
DNUM=DNUMBER
DEPARTMENT)
Examples of Relational Algebra Queries

Q3: For every project located in ‘Stafford’, list the project number,
the controlling department name and the department manager’s
last name, address and birth date

STAFFORD_PROJS   PLOCATION=‘STAFFORD’ (PROJECT)

CONTR_DEPT  (STAFFORD_PROJS
PROJ_DEPT_MGR  (CONTR_DEPT

RESULT   PNUMBER, DNAME,LNAME, ADDRESS, BDATE (RESEARCH_EMPS)

DEPARTMENT)
EMPLOYEE)
DNUM=DNUMBER
MGRSSN=SSN
Examples of Relational Algebra
Queries

Q4: Find the names of employees who work on ALL projects controlled by
department number 5





DEPT5_PROJS(PNO)   PNUMBER( DNUM=5 (PROJECT))
EMP_PROJ(SSN, PNO)   ESSN, PNO(WORKS_ON)
RESULT_EMP_SSNS  EMP_PROJ ÷ DEPT5_PROJS
RESULT   FNAME, LNAME (RESULT_EMP_SSNS
ESSN = SSN EMPLOYEE)
Q5:Make a list of project numbers for projects that involve an employee
whose last name is ‘Smith’ either as a worker or as a manager of the
department that controls the project

SMITHS  SSN( LNAME=‘Smith’(EMPLOYEE))

SMITH_WORKER_PROJ  PNO(WORKS_ON
ESSN = SSN SMITHS)
MGRS  LNAME, DNUMBER(EMPLOYEE
SSN=MGRSSN DEPARTMENT)
SMITH_MANAGED_DEPTS (DNUM)   DNUMBER( LNAME=‘Smith’(MGRS))

SMITH_MANAGED_PROJS (PNO)   PNUMBER(SMITH_MANAGED_DEPTS

RESULT (SMITH_WORKER_PROJS


 SMITH_MGR_PROJS)
DNUMBER =DNUM
PROJECT)
Additional Relational Operations
►
Use of the Functional operator ℱ (script f)
 ℱFUNCTION ATTRIBUTE (R)
► ℱMAX Salary
► ℱMIN Salary
(Employee) retrieves the maximum salary value from Employee
(Employee) retrieves the minimum Salary value from Employee
► ℱSUM Salary
(Employee) retrieves the sum of the Salary from Employee
 Sometimes we want to get aggregate functions over groups of tuples
(e.g. for all employees in every department separately)
► GROUPING_ATTRIBUTES

ℱFUNCTION ATTRIBUTE (R)
ℱCOUNT SSN, AVERAGE Salary (Employee) groups employees by DNO (department
number) and computes the count of employees and average salary per
department
DNO
R(DNO, NO_OF_EMPLOYEES, AVERAGE_SAL ) 
(DNO ℱCOUNT SSN, AVERAGE Salary
(Employee))
Get the number of employees and the
average salary in each department
DNO
ℱCOUNT SSN, AVERAGE Salary (Employee)
If no names are specified for aggregates:
FUNCTION_ATTRIBUTE
Get the number of employees in the company
and the average salary of an employee
ℱCOUNT SSN, AVERAGE Salary (Employee)
Default Names
Examples of Relational Algebra Queries
►
Q6: List the names of all employees with two or more
dependents
 T1(SSN, NO_OF_DEPTS) 
ESSN
ℱ Count DEPENDENT_NAME (DEPENDENT)
 T2   NO_OF_DEPS >=2 (T1)
 RESULT 
►
 LNAME, FNAME (T2
SSN=SSN
EMPLOYEE)
Q7: Retrieve the names of employees who have no
dependents
 ALL_EMPS   SSN(EMPLOYEE)
 EMPS_WITH_DEPS(SSN)   ESSN(DEPENDENT)
 EMPS_WITHOUT_DEPS  (ALL_EMPS - EMPS_WITH_DEPS)
 RESULT 
 LNAME, FNAME (EMPS_WITHOUT_DEPS
SSN=SSN
EMPLOYEE)
EMPLOYEE
SSN = MGRSNN
DEPARTMENT
SSN
SUPERSSN