For our project we decided to implement a software system for a movie rental store. This system is designed for the use of a cashier. There are three entity sets in our system: movie, customer and critic. A customer has a number of attributes: Last Name, First Name, address, phone number, birthday, membership number, movies checked out and social insurance number. A Customer can either rent or buy a movie. A movie has a number of attributes: category, year of release, MPAA rating, studio, ISBN, category. Since we implemented Rental and Buying relationships, it was decided to use and ISA hierarchy to separate copies for sale and those for rent. In addition to the attributes of a movie, the merchandize entity set has the following attributes: merchandise fee (cost to buy a movie), number of available copies. The rental movie entity has the following additional attributes: number of available copies, fee per day to rent, late fee per day. Rent relatiobship involves renting and returning a movie. When a customer rents a movie a date of rental is assigned to a relationship, but also a date of return is assigned. If a customer returns a movie later then the actual due date, the late fee will be charged. Relationship Buy is not very fancy. It doesn't allow returns. We will be checking to make sure that a customer can't purchase more movies than there are copies. However, there is no restocking procedure right now.
In addition, to buying and renting movies, we thought it would be interesting to implement a relationship Reviews. This relationship will allow a customer to determine if a particular movie is worth seeing. An entity set Critic refers to the individual who rates movies. Critic has a number of attributes: biography, occupation, year of first movie review, critic id, e-mail, First Name, Last Name and country of birth. A critic can rate a movie, giving it a rating, a review article and date of review. Every review gets a review ID.

Constraints and candidate keys for entity sets.
Customer entity set
Movie entity set
Critic entity set
Candidate keys and Constraints for relationships.
Rental relationship
Candidate key for Rent relationship is {Rent_id}
Cardinality constraint for the relationship Rents is many-to-many, meaning that one movie can be rented by many customers (since we have multiple copies), but also, one customer can rent many movies. An additional constraint on the Rental relationship is that a customer can not check out a movie if there are no copies available.
There is no Participation constraint for the relationship Rents, meaning that a customer can rent no movies at all, and also a movie can remain "unrented". The Rent relationship is partial.
Buy relationship
Candidate key for Buys relationship is {transaction_id}.
Cardinality constraint for the relationship Buyss is many-to-many, meaning that a movie can be bought by several customers (since we have multiple copies), but also, one customer can buy several movies.
There is no Participation constraint on the Buys relationship. A customer can buy no movies. Also, a movie can remain unsold. Therefore, this relationship is partial.
An additional constraint on the Buy relationship is that a number of movies bought by a cutomer can not exceed the number of available copies.
Review relationship
Candidate key for Reviews relationship is {review_id}.
Cardinality constraint for the relationship Reviews is many-to-many, meaning that one movie can be reviewed by many critics, and also, one critic can review many movies.
There is no Participation constraint on the Reviews relationship. This relationship is partial.
Use of software by a cashier(employee).
Sample of the queries that will be asked at the demo:
Update operations to be supported:
Reports to be generated: