There is no solutions available...Here is what I come up with for the solutions for Finals of 1996 when Professor Widom taught it. Some of the materials are irrevalent so the answer is not included. 1. (a) INSERT INTO Employee VALUES (25, 10) INSERT INTO Employee VALUES (30, 100) (b) ID salary __________________ 25 11 30 110 (c) ID salary ________________ 25 110 25 110 2. (a) The policy states that the DB checks to see if there is any change to the DB that might result in an employee having a salary higher the the salary cap of the department he/she works in. If so, the constraint is violated. (b) CREATE TABLE Employee( ID integer unique, salary integer, dept# integer, check (not exist salary > ( select Department .salarycap from Department where Department.number=Employee.dept# ) )); create table Department( number integer unique, salaryCap integer, check(salarycap >= ALL (select employee.salary from Employee where Employee.dept# = Department.number ) )); 5. (a) Yes. (b) As in the textbook, compute the closure of {AC} which is {ABCD}. Since D is in the set{ABCD}, A, C->D follows from A->B and B, C->D. 6. (a) Sales: (clerk, date, item#, size, color) Item: (item#, size, color) (b) clerk->store store->city item#->price (c) NO. decompose sales: R1(clerk, store) R2(store, city) R3(clerk, date, item#, size, color) decompose item: R4(item#, price) R5(item#, color, size) (d) item #->>color item#->>size (e) R5 is not in 4NF. decompose R5: R6(item#, color) R7(item#, sixe) 7. select struct(ID:integer, name:string) from e in Employee where exist c in e.my_clients (e.info.street = c.info.street and e.info.city = c.info.city) 9. The first part(before the line " select N1) creates all possible start location to distanation pairs. (much like the example in the textbook). the query returns all the places that there is some route to go back to itself.