Midterm Review - GMU CS Department

Review for
Midterm
Problem 2.7
name
age
ssn
name
address
ssn
Patients
HasPriPhy
date
exp_year
Doctors
qty
prescribes
address
name
phone
price
tradeName
Pharmacies
Sell
Drugs
formula
stDate
endDate
isContracted
specialty
Makes
txt
super
name
PharmCo
phone
Relational Database Schema
Doctors(ssn:integer,name:string, specialty:string,year_exp:integer)
PK: ssn
Patients(ssn:integer,name:string,age:integer,address:string,ssnDoctor:integer)
PK: ssn
FK: ssnDoctor references Doctors
Pharmacies(name:string, phone:integer, address:string)
PK: name
PharmCo(name:string, phone:integer)
PK: name
Drugs(tradeName: string,formula:string,pharmCoName: string)
PK: pharmCoName, tradeName
FK: pharmCoName references PharmCo
Prescribes(ssnPatient:integer, ssnDoctor:integer, pharmCoName: string , tradeName:sring, date:date, qty:integer)
PK:
FK: ssnPatient references Patients
ssnPatient,ssnDoctor,pharCoName,tradeName FK: ssnDoctor references Doctors
FK: (pharCoName,tradeName) referencesDrugs
Sells(pharmCoName: string, tradeName: string, pharmacyName: string , price:float)
PK: pharmCoName,tradeName,pharmacyName FK: (pharmCoName,tradeName) references Drugs
FK: pharmacyName references Pharmacies
Contracts(pharmCoName: string,pharmacyName: string , startDate:date, endDate:date, text:string,
supervisor:string)
PK: pharCoName,pharmacyName
FK: pharmCoName references PharmCo
FK: pharmacyName references Pharmacies
Each faculty is assigned to exactly one office room. An
office room is assigned to at least one faculty. Is the
following E-R diagram correct?
If your answer is NO, indicate what is wrong in this E-R
diagram.
Faculty
AssignedTo
Answer: Correct!
Office
A faculty teaches at most three classes, but a class is
taught by exactly one faculty. Is the following E-R diagram
correct?
If your answer is NO, indicate what is wrong in this E-R
diagram.
Faculty
teaches
Classes
Answer: NO
Total participation of Faculty w.r.t teaches.
Key Constraint on Faculty w.r.t teaches.
Partial participation of Classes w.r.t teaches.
Each faculty schedules office hours in exactly one office room at a
weekday and time, and this information must be recorded. An office
may be assigned to several faculties’ office hours at different days
and times. All offices are assigned to faculty’s office hours. In the
following E-R Diagram, complete the dashed lines to reflect the
appropriated participation and key constraints.
Time
Faculty
scheduled
WeekDay
Office
Each faculty schedules office hours in exactly one office room at a
weekday and time, and this information must be recorded. An office
may be assigned to several faculties’ office hours at different days
and times. All offices are assigned to faculty’s office hours. In the
following E-R Diagram, complete the dashed lines to reflect the
appropriated participation and key constraints.
Time
Faculty
scheduled
WeekDay
Office
Each faculty schedules office hours in exactly one office room at a
weekday and time, and this information must be recorded. An office
may be assigned to several faculties’ office hours at different days
and times. All offices are assigned to faculty’s office hours. In the
following E-R Diagram, complete the dashed lines to reflect the
appropriated participation and key constraints.
Time
Faculty
scheduled
WeekDay
Office
Problem 4.2
Given two relations R1 and R2, where R1 contains
N1 tuples and R2 contains N2 tuples, with
N2>N1>0, give the minimum and maximum possible
sizes (in tuples) for the resulting relation
produced by each of the following relational
algebra expressions. In each case, state any
assumptions about the schemas for R1 and R2
needed to make the expression meaningful.
R1  N1, R2  N 2, 0  N1  N 2
Expression
Assumption
Min
Max
N2
N1  N 2
R1  R 2 R1 and R2 are union - compatible
N1
R1  R 2 R1 and R2 are union - compatible
0
0
N1
R1  R 2 R1 and R2 are union - compatible
none
R1 R 2
N1* N 2 N1* N 2
 a5 ( R1)
0
R1 has an attribute named a
N1
N1
 a (R1) R1 has an attribute named a, N1  0 1
The set of attributes of R 2 is a subset of
0
0
R1/ R2 the set of attributes of R1
R2 / R1 The set of attributes of R1 is a subset of 0 N 2 / N1
the set of attributes of R 2
Suppose R1 and R2 are multisets of tuples (rows);
N1 = number of copies of a tuple t in R1;
N2 = number of copies of a tuple t in R2.
What’s the number of copies of t in
R1 UNION ALL R2 ?
Answer: N1+N2
Suppose R1 and R2 are multisets of tuples (rows);
N1 = number of copies of a tuple t in R1;
N2 = number of copies of a tuple t in R2.
What’s the number of copies of t in
R1 INTERSECT ALL R2 ?
Answer: min{N1,N2}
Suppose R1 and R2 are multisets of tuples (rows);
N1 = number of copies of a tuple t in R1;
N2 = number of copies of a tuple t in R2.
What’s the number of copies of t in
R1 EXCEPT ALL R2 ?
Answer:
N1  N 2 if
0
N1  N 2
otherwise
Problem 4.4
Consider the following schema:
Suppliers(sid:integer, sname:string, address:string)
Parts(pid:integer, pname:string, color:string)
Catalog(sid:integer, pid:integer, cost:real)
The Catalog relation lists the prices
charged for Parts by Suppliers.
State what the following queries compute.
Suppliers(sid:integer, sname:string, address:string)
Parts(pid:integer, pname:string, color:string)
Catalog(sid:integer, pid:integer, cost:real)
Answer: Find the Supplier names of
the suppliers who supply a red part
that costs less then 100 dollars.
Suppliers(sid:integer, sname:string, address:string)
Parts(pid:integer, pname:string, color:string)
Catalog(sid:integer, pid:integer, cost:real)
Answer: This Relational Algebra statement does
not return anything because of the sequence of
projection operators. Once the sid is projected, it
is the only field in the set. Therefore, projecting
on sname will not return anything.
Suppliers(sid:integer, sname:string, address:string)
Parts(pid:integer, pname:string, color:string)
Catalog(sid:integer, pid:integer, cost:real)
Answer: Find the Supplier names of the suppliers
who supply a red part that costs less than 100
dollars and a green part that costs less than 100
dollars.
Suppliers(sid:integer, sname:string, address:string)
Parts(pid:integer, pname:string, color:string)
Catalog(sid:integer, pid:integer, cost:real)
Answer: Find the Supplier ids of the suppliers who
supply a red part that costs less than 100 dollars
and a green part that costs less than 100 dollars.
Suppliers(sid:integer, sname:string, address:string)
Parts(pid:integer, pname:string, color:string)
Catalog(sid:integer, pid:integer, cost:real)
Answer: Find the Supplier names of the suppliers
who supply a red part that costs less than 100
dollars and a green part that costs less than 100
dollars.
Department (D-code, D-Name, Chair-SSn)
Faculty (Ssn, F-Name, D-Code, Rank)
Course (D-code, C-no, Title, Units)
Student (Ssn, S-Name, Major, Status)
Prereq (D-code, C-no, P-code, P-no)
Enrollment (Class-no, Student-Ssn)
Class (Class-no, D-code, C-no, Instructor-SSn)
Transcript (Student-Ssn, D-Code, C-no,
Grade)
(1) Find the ssn of faculty who are
currently teaching courses taught by
faculty of several departments.
select F.SSn
(2) Find the ssn of faculty who are not
from Class Co, Faculty F
currently teaching any courses of his/her
where F.Ssn = Co.Instructor- SSn
department.
and not exists
(3) Find the ssn of faculty who are
(select *
currently teaching courses taught only by
from Class C, Faculty F1
where Co.D-code = C.D-code faculties of his/her department.
(4) Find the ssn of faculty who are
and Co.C-no = C.C-no
and C.Instructor-SSn = F1.Ssn currently teaching some course of his/her
and F1.D-code != F.D-Code); department.
(5) Find the ssn of faculty who are
currently teaching exactly one course.
Flight(flno:integer, from:string, to:string, distance: integer, departs:time,
arrives:time)
Aircraft(aid:integer, aname:string, cruisingrange:integer)
Certified(eid:integer, aid:integer)
Employees(eid:integer, ename:string, salary:integer)
Employees relation describes pilots and other kinds of employees
as well;
Every pilot is certified for some aircraft (otherwise, he/she would
not qualify as a pilot);
Only pilots are certified to fly.
Write the following queries in relational algebra
and SQL.
Flight(flno:integer, from:string, to:string, distance: integer, departs:time,
arrives:time)
Aircraft(aid:integer, aname:string, cruisingrange:integer)
Certified(eid:integer, aid:integer)
Employees(eid:integer, ename:string, salary:integer)
Find the aids of all aircrafts that can be used on
non-stop flights from Bonn to Madrid.
 BonnToMadr id ,  dis tan ce  from'Bonn'to'Madrid' Flight 
 aid Aircraft  cruisin grangedis tan ce BonnToMadr id 
SELECT A.aid
FROM Aircraft A, Flight F
WHERE F.from=‘Bonn’ AND F.to=‘Madrid’, AND
A.cruisingrange >=F.distance
Flight(flno:integer, from:string, to:string, distance: integer, departs:time,
arrives:time)
Aircraft(aid:integer, aname:string, cruisingrange:integer)
Certified(eid:integer, aid:integer)
Employees(eid:integer, ename:string, salary:integer)
Identify the flights (flno) that can be piloted by
each pilot whose salary is more than $100,000.
 Temp,  aid  salary100,000Employees   Certified 
 f ln o  dis tan cecruisin grangeTemp  Aircraft  Flight 
SELECT F.flno
FROM Aircraft A, Certified C, Employees E, Flight F
WHERE E.eid=C.eid AND C.aid=A.aid AND
F.distance<=A.cruisingrange AND E.salary>100,000
Flight(flno:integer, from:string, to:string, distance: integer, departs:time,
arrives:time)
Aircraft(aid:integer, aname:string, cruisingrange:integer)
Certified(eid:integer, aid:integer)
Employees(eid:integer, ename:string, salary:integer)
Find the names of pilots who can operate planes with a range
greater than 3,000 miles but are not certified on any Boeing
aircraft.
 Temp1,  eid  cruisin grange3,000 Certified  Aircraft 
 Temp2,  eid  aname 'Boeing' Certified  Aircraft 
 ename Temp1  Temp2  Employees 
Find the names of pilots who can operate planes with a range
greater than 3,000 miles but are not certified on any Boeing
aircraft.
Another solution using EXCEPT:
SELECT E.ename
FROM Employees E
WHERE E.eid IN
((SELECT C1.eid
FROM Certified C1, Aircraft A1
WHERE A1.aid=C1.aid AND A1.cruisingrange>3000)
EXCEPT
(SELECT C2.eid
FROM Certified C2, Aircraft A2
WHERE A2.aid=C2.aid AND A2.aname=‘Boeing’))
Flight(flno:integer, from:string, to:string, distance: integer, departs:time,
arrives:time)
Aircraft(aid:integer, aname:string, cruisingrange:integer)
Certified(eid:integer, aid:integer)
Employees(eid:integer, ename:string, salary:integer)
Find the eids of employees who make the highest salary (RA
only).
The approach to take is: first find all employees who do not have the
highest salary. Subtract these from the original list of employees
and what is left is the highest paid employees.
 E1, Employees 
 E 2, Employees 
 E 3,  eid  4  eid , E1  E1.salary E 2.salary E 2
 eid E1  E 3
Flight(flno:integer, from:string, to:string, distance: integer, departs:time,
arrives:time)
Aircraft(aid:integer, aname:string, cruisingrange:integer)
Certified(eid:integer, aid:integer)
Employees(eid:integer, ename:string, salary:integer)
Find the eids of employees who make the second highest
salary (RA only).
The approach is similar to the previous one. First find all employees
who do not have the highest salary. Remove these from the original
list of employees and what is left is the highest paid employees.
Remove the highest paid employees from the original list. What is
left is the second highest paid employees together with the rest of
the employees. Then find the highest paid employees of this new list.
This is the list of the second highest paid employees.
Flight(flno:integer, from:string, to:string, distance: integer, departs:time,
arrives:time)
Aircraft(aid:integer, aname:string, cruisingrange:integer)
Certified(eid:integer, aid:integer)
Employees(eid:integer, ename:string, salary:integer)
Find the eids of employees who make the second highest
salary (RA only).
 E1, Employees 
 E 2, Employees 
 E 3,  eid  4  eid , E1  E1.salary E 2.salary E 2
 E 4, E 2  E 3  E 5, E 2  E 3
 E 6,  eid  4  eid , E 4  E 4.salary E 5.salary E 5
E3  E 6
Material for you to get ready for Midterm…
Sample Midterm (with solutions);
Solutions of HW1, HW2, HW3;
You should:
Review the lectures’ slides and hws;
Do the readings in the textbook;
Do exercises at the end of chapters.