ER Model and Normalization
Q1: Garage Database [40 points]
We want to design a database for a local garage. For each customer, we want to record the (unique) name, the customer address, and the contact phone number. For each vehicle, we want to record the unique vehicle’s identification number (VIN), and the vehicle’s make, model and year. For each repair job we want to record the description of the job done (maximum 200 chars), the date, and the total dollar cost. A repair job may involve zero or more parts (like, e.g., “windshield wipers”, “battery”, etc.) For each part we want to record its (unique) part number, the part name and its cost. In addition, note that:
• Each vehicle may have 1 or more repair jobs.
• Each customer may be the primary owner of 1 or more vehicles.
• Every vehicle has only one primary owner (we ignore co-owners).
• No vehicle can have more than one repair job in any given day.
Please answer the following questions:
Q1.1. (10 points) Draw an ER diagram for this database. Make sure to indicate primary keys, cardinality constraints, weak entities (if any), and participation constraints. List any assumptions you make in the process.
Q1.2. (10 points) Translate the ER diagram in Q1.1 into relational database tables (i.e. give the SQL DDL statements). Make sure that the translation captures key constraints (primary keys and foreign keys if applicable) and participation constraints in the ER diagram. Identify constraints, if any, that you are not able to capture.
Q1.3. (20 points) Identify the functional dependencies that you expect should hold for the Garage Database domain. Use the dependencies to find keys and BCNF normal forms.
Q2: Restaurant Database [ 40 points]
The student administrator of the Mini University wants to design a database for profiling students’ preferences for the nearby restaurants and the dishes. For example, the student Jack Smith likes the “rib eye steak” at the “TGI Fridays”, not the “rib eye steak” at the “Olive Garden”, while the student Nancy Graham likes the Italian spaghetti at “Zeppoli’s”.
• Each student has his/her SSN, the name, and the department.
• Each restaurant has its name, and the mailing address.
• The name of a restaurant may not be unique, but the mailing address is unique.
• Each dish has the name and the price.
• The price of a dish might differ on different restaurants. For example, “rib eye steak” is $15 at “TGI Fridays”, but $20 at the “Olive Garden”.
• The name of a dish is unique within a restaurant. Two restaurants may have the same dish name.
• A dish is offered by at least one restaurant, and a restaurant offers at least a dish.
Please answer the following questions:
Q2.1. (10 points) Draw an ER diagram for this database. Make sure to indicate primary keys, cardinality constraints, weak entities (if any), and participation constraints. List any assumptions you make in the process.
Q2.2. (10 points) Translate the ER diagram in Q2.1 into relational database tables (i.e. give the SQL DDL statements). Make sure that the translation captures key constraints (primary keys and foreign keys if applicable) and participation constraints in the ER diagram. Identify constraints, if any, that you are not able to capture.
Q2.3. (20 points) Identify the functional dependencies that you expect should hold for the Restaurant Database domain. Use the dependencies to find keys and BCNF normal forms.
Q3: Reverse Engineering [20 points]
This question tests how well you understand the algorithm for converting E/R diagrams to relational schemas. An E/R diagram when converted to relations (using the mechanical construction that we know and love) gives rise to the following relations:
- R(a, b, c)
- S(a, d)
- T(a, d, f, g)
You may assume that the same symbols refer to the same attribute and different symbols refer to different attributes (e.g., the attributes a in the relations R, S and T are the same) i.e. it ultimately comes from a single entity set or relationship in the E/R diagram.
Your task is to reverse-engineer the E/R diagram from these relations; in other words, what E/R diagram could have produced these relations. For full credit, give two different E/R diagrams that could have produced these (and only these) relations (i.e. 10 points for each correct E/R diagram).
Submission Guidelines and Requirements
- Include your name and UCM ID in the assignment
- Add the following statement in your solution “I certify that the codes/answers/outputs of this assignment are entirely my own work.”
// Your Name
// Your UCM ID
//Certificate of Authenticity: “I certify that the assignment is entirely my own work.”
- Add comments to your submission as much as possible
- Submit your ER diagrams, relation schemas, functional dependencies and normalized forms
- Zip your files and upload the zipped file onto Blackboard
- There could be more than one correct answer. We shall accept them all
- Whenever you are making an assumption, please state it clearly
- Grading standards:
- There will be automatic 10 points penalty if your submission is missing certificate of authenticity
- Late submission: Late submission is allowed with a 10% deduction per day (delay in submission). Submission after 3 days of the deadline won’t be accepted