Project 1. CompanyX
CS422, Summer 2004

Thursday, August 26

Please upload your files using the online turnin server. Note that file uploading will be disabled automatically after 11:59PM of the due date, so please make sure to turn in your solutions in time.


[Problem Description] In this project we will implement a database for a hypothetical CompanyX. In particular, the database will keep track the following information:

For each employee, their name, SSN, birthday, gender, salary,  address,  supervisor, dependent(s). We assume that
For each dependent, their name, SSN, birthday, gender, and their relationship with the employee.

For each department, its name, city, manager, employee(s), and project(s). We assume that
For each project, their name, id, the department to which it belongs,  the employees working on the projects, and the number of hours per week each employee spends on this project. We assume
[Relational Design] Apply the relational design principles and come up with a set of relations in 3NF, BCNF, or 4NF as appropriate. Write SQL statements to implement your design in a DBMS, and populate the tables with some synthetic data such that each table has at least two tuples. Evaluation for this part of the project will be based on the database design, and proper use of schema elements such as data types, constraints, indexes, and views.

[Inheritance] Modify your database implementation to support different types of employees, namely, salaried employees, commissioned employees, and hourly employees.
[Triggers and Stored Procedures] Add the following triggers and stored procedures to your database:
[Java]  Write a Java GUI client to the database such that a person who does not know SQL could perform the following tasks:
(a) Use JDBC for the connection between the the GUI client and the database.
(b) Use hibernate for the database connection and design.

[Grading and Extra Credit Work]