Project 2: Database Design
Due 11:59pm EDT Wednesday, 12 October 2016
(Part A: Due 11:59pm EDT Monday, 3 October 2016)
Introduction
In this project, you will design and implement a database system that satisfies the requirements of a client. For your ease, the project has been divided into two parts -- Part A deals with coming up with an entity-relationship (E-R) model for the system, and Part B deals with implentation-level details for the system.
Description of the Database and Requirements
A movie production company wants to design a system to manage the information about auditioning for roles in movies, and you have been selected for this job. Your task is to design the database that captures all the information that needs to be maintained.
Requirements
The relevant information is as follows:
- The database should keep the information about casting directors (a team of people who are in charge of auditioning actors for roles in movies and for finalizing an actor for a particular role), movies, roles, auditions and actors (who audition for a role).
- Each role is managed by one casting director who is reponsible for selecting an actor for that role.
- Each actor can audition for one role in a movie (they can audition for multiple movies at a time) except when it is an animated movie. Animated movies have voice-only roles. In such cases,
it is possible for an actor (e.g.,
Mel Blanc)
to audition for multiple roles in the same movie. Each audition and its outcome must be recorded.
- Each movie can have several open roles, and the open roles will be closed when actors have been cast for the roles.
Queries Supported
The database system should support the following functionalities for the production company:
- List the movies produced by it (the production company).
- List all roles (open/closed) within each movie.
- List the names of casting directors working for the production company.
- List the names of casting directors associated with a movie.
- For each movie, identify the roles in the movie that a casting director is responsible for.
- For each movie, list the actors finalized for the movie.
- Identify the movies that have open roles, and for each such movie, list all open roles.
- See the portfolio of each actor, i.e., list of movies and roles that the actor auditioned for and the ones he was selected to/rejected from.
- List the movies and roles that an actor is currently a part of.
- List the casting directors that an actor has communicated with or is communicating with currently.
Your Assignment
Based on the above database, please answer Part A and Part B.
PART A (30 points)
Design an E-R diagram for the scenario specified above. Please also indicate the notation you use, e.g., the particular symbols for entities and relationships.
(You can submit Part A by 3rd October 2016 and get 5 points.)
PART B (65 points)
- (10 points) Convert the E-R model of Part A to its corresponding relational model.
- (10 points) For each of the relations in the database,
- Specify the functional dependencies that characterize the schema of the relation based on the requirements (A - D) above.
- Determine if the schema is in 3NF with respect to the functional dependencies specified in (a). If not, convert it to be in 3NF.
- (10 points) Implement and populate data into the normalized database, i.e., write SQL statements to create the tables and insert data.
- (30 points) Ensure your implementation can support at least the queries mentioned in Q1 - Q10 and provide SQL statements that satisfy these queries. (Based on your insert statements, the TAs should be able to insert additional data and query the database). Please mention additional queries that your implementation is able to support.
- (5 points) Please include SQL statements to drop the tables.
What to submit
You are required to submit four files:
- In a pdf, submit Part A and Part B (B1, B2).
- Submit Part B3 in a sql script named b3_your_career_login.sql. (This should set up the database).
- Submit Part B4 in a sql script named b4_your_career_login.sql. (This should execute the queries).
- Submit Part B5 in a sql script named b5_your_career_login.sql. (This should drop the tables you created).
TESTING:
Before submitting, please make sure that your sql scripts execute without any error, i.e., on typing "@p1_your_career_login" at the SQL*Plus prompt, there should not be any errors. If you are unable to finish any part, please mention in the pdf.
Turning in your files
- (5 points) Upload the E-R design for Part A by 3rd October, 2016.
- Please create a single zip file that contains the four files as mentioned. Please turn in the project by uploading the zip file in Blackboard (click on Project 2 and
Attach File
).