HW04: Database Design due Wed 07 Feb 13:00

\begin{purpose}
This assignment provides practice designing databases. As with ...
...hat will require you to make
some decisions and interpretations.
\end{purpose}

Allowed and Disallowed Resources

In completing this assignment you MAY use/access the following resources:

You may NOT use/access:

Failure to abide by these guidelines will result in a zero for the assignment and the incident will be reported to the university provost as a violation of the university academic integrity policy. A second incident of academic dishonesty (whether from this course or another computer science course) will result in an F in the course.

Overview

You will be creating designs for three databases which will be provided in a text file (i.e., has a .txt extension). For each design you will do the following:
  1. A sentence explaining the purpose of the database.
  2. List all fields the database will store along with a phrase or sentence that explains what it is.
  3. Identify and list all functional dependencies.
  4. Show the proposed BCNF design using list notation. Use an asterisk to identify primary keys.

If I were doing this assignment for the book database we've been using my solution would look something like this:

This database will hold information about books, authors, and publishers.
We limit each book to have only one author.

List of Fields
  isbn        the standard book number
  title       title of the book
  num_pages   number of pages in the book
  year        copyright year of the book
  auth_id     author's id number
  auth_first  book author's first name
  auth_last   book author's last name
  pub_id      publisher's id number
  pub_name    name of the book's publisher
  pub_addr    city/state of the publisher

Functional Dependencies
  FD: pub_id --> pub_name, pub_addr
  FD: author_id --> author_first, author_last
  FD: isbn --> title,num_pages,year

Design
  publisher=(pub_id*,pub_name,pub_addr)
  author=(author_id*,auth_first,auth_last)
  book=(isbn*,title,num_pages,year,auth_id,pub_id)

Three Designs

Two of the following designs are presented in UML notation here: https://josephus.hsutx.edu/classes/db/source/design_diagrams.pdf. The designs in this document were produced by beginning students who had not prior training in database design. For that reason, some of the designs probably don't make a lot of sense as presented. If that is the case then you should try to imagine what the design was intended to accomplish and then tweak the design as needed for your answers below.

Produce a database design for each of these:

  1. The “candy” database given in the above design document. You may need to modify/adjust fields in order for the design to make sense.

  2. The “four” database (dealing with recipes) given in the above design document. You may need to modify/adjust fields in order for the design to make sense.

  3. Imagine a major hotel is wanting to keep track of room reservations. To do so they need to store the following information: customer name, customer payment information, date of reservation, number of adults with the reservation, number of children with the reservation, room number, number of beds in the room, maximum occupancy for the room, smoking permitted in the room or not.

Grading and Submission

All three of your designs should be in a single text document and should follow the instructions provided. Upload the document into Canvas prior to the beginning of class on the due date.

The assignment has 30 possible points with each design being designated 10 points as follows: 1 point for the descriptive sentence, 3 points for list of fields and descriptions, 2 points for identifying functional dependencies, and 4 points for the final design.