In this project, you will design and implement a relational database system to support the operations of an on-line movie rental system. You will use HTML for the user interface, Oracle or MySQL for the database server, and Java, Javascript, and JDBC for connectivity between the user interface and database server. The database server is accessible from the PCs in both the undergraduate and graduate Transaction Processing labs (Computer Science Building, Rooms 2114 and 1239), on which you will be given an NT account and Oracle and MySQL accounts.
Please see the Transaction Processing Lab web site for general information about the Transaction lab and its policies, and the lab's Oracle and MySQL web sites for information on how to access these database servers in the Transaction lab and other account information.
If you own a PC, you are encouraged to develop as much of the code as possible on your PC, to ease the congestion in the TP lab. For these purposes, I suggest you use SQL Server or MySQL Server.
SQL server is a derivative of Sybase's SQL server. Both are derived from an earlier implementation of the ANSI SQL-92 standard. You should be able to get a copy of the SQL Server Developer Edition, for both 2000 and 2005, from the SINC site or via the Microsoft Developer Network Academic Alliance (MSDNAA) web site.
For MySQL, you can download a copy of MySQL server from the
Some of you have also asked about using Microsoft Access as the DBMS. This
should be OK as long as the server supports SQL and JDBC.
You are to work in teams of two. By now, you should already
have a partner. (Please let me know right away if you do not!) You and
your partner should now choose a name for your team/company. E-mail the names
of your team members and the name of your company to
xinzhao@cs.sunysb.edu
as soon as possible. If you are unable to find a teammate, please let me know
asap, and I will find one for you.
The system you are to develop is a lot like the on-line movie rental web sites
Netflix and
Blockbuster.
These systems work basically as follows:
In reality, Netflix and Blockbuster use the postal system to mail users a DVD
along with a pre-paid envelope for returning it. In this project, you will
stream the movie to the user's PC, laptop or mobile device. The user "returns"
the movie by hitting a return button linked to his account. Your
system will furthermore assume that there are only a certain number of copies of
any given movie that can be out in circulation at any moment in time. Once
that limit is reached, the movie is considered unavailable.
A very interesting aspect of online movie rental systems such as Netflix and
Blockbuster is that they implement
Recommender Systems
that make movie suggestions which are likely to be of interest to their
customers. Such systems often use a Nearest Neighbor approach to determine the
movies they think will be of interest to a particular customer. The well
publicized Netflix Prize, a contest with a dataset of over 100 million movie
ratings and a grand prize of $1,000,000, has energized the search for new and
more accurate algorithms. Please see the
Recommender System Wikipedia page for more information.
Please visit the
Netflix and
Blockbuster web sites in order
to get a better idea of how they work and to obtain an understanding of the
look and feel of a movie rental web site.
I have also placed a Powerpoint tutorial on blackboard on how to connect to
Sybase using Java and on how to develop the UI (User Interface) for your online
trading system course project. You can find the tutorial in the
Project Assignments subfolder of the
Assignments folder. (You can also find the tutorial via the
link associated with the announcement I recently posted on blackboard about the
tutorial.)
To further help you with the project, a former TA has developed a prototypical
database system for a University Registration system that closely resembles
the student registration system used as a running example in the course
textbook. You should consult this demo system as a guide for your project
development. You can access the demo system, and the underlying source code,
by following the links I placed in an announcement I recently posted on
blackboard. As you experiment with the demo system, you should also start to
become familiar with Java, Javascript, HTML, and JDBC on your own. I will
lecture about JDBC (Chapter 8 of the course textbook) after the midterm. You
might also want to buy the books about these languages recommended on the
course homepage. We also have two undergraduate TAs who have taken CSE 305
with me in the past and are very familiar with the course project; consult
with them often and wisely.
It is recommended that you regularly check the blackboard Project
Assignments folder and the
PROJECT
ASSIGNMENTS web page for information on the course project. This page will
be updated from time to time with important information on how to proceed with
the project.
This semester there will be a CSE 305 Course Project
Competition in which the top-three finishing teams will receive award
certificates. I am trying to find a corporate sponsor for this competition and
will let you know when and if I succeed in doing so. So please do your best to
produce a professional-looking online movie rental system that offers a
full compliment of features and functionality, including at least those
specified below.
The basic idea behind your on-line movie rental system is that it will allow
customers to use the web to browse/search the contents of your database (at
least that part you want the customer to see) and to rent movies over the
web. In this regard, it is a lot like the on-line movie rental web sites
Netflix and
Blockbuster. So visit
these sites to get an idea as to what your system should look like.
Your database system must be based on the specifications and
requirements that follow.
The users of your system will be the customers that use your system to rent
movies and pay monthly fees for doing so, customer representatives who provide
customer-related services, and the site's manager. You should assume
that the computer knowledge of the users is limited (say, that of a typical
AOL subscriber), and thus your system must be easy to access and operate.
The data items required for the movie-rental database can be classified into
five categories: orders, movies, actors,
customers and employees, where an order is an
order to rent a movie.
This classification does not imply any particular table arrangement. You are
responsible for arranging the data items into tables, determining the
relationships among tables and identifying the key attributes. In addition,
you should include indices in your tables to speed up query processing.
You should base your choice of indices on the type and expected frequency of
the queries outlined in Section 3.
Finally, you should specify and enforce integrity constraints on the data,
including referential integrity constraints.
As I mentioned in class, you will first create an E-R diagram of your
online movie rental system before developing your relational model. Details
of this assignment will be forthcoming.
This category of data should include the following items:
A user places an order to rent a particular movie. A customer representative,
who oversees the successful completion of the order, is associated with every
rental order.
This category of data should include the following items:
Movies are of a certain type: Comedy, Drama,
Action, or Foreign. For testing purposes, you can
populate your database with any movies you like. We will provide you
with all the movie data you will need to demo your system to us at the
end of the semester. The Distribution Fee is the dollar amount your
company has to pay in order to obtain the rights to distribute a movie
to the general public. A movie's rating is a measure of its popularity.
You can assume it is a integer ranging from 1 to 5, with 5 indicating
"must see at all cost" and 1 indicating "a clunker".
This category of data should include the following items:
An actor's rating is a measure of his or her popularity and like
a movie rating is an integer from 1 to 5.
The items required for this category include:
A customer's Account Type indicates which of the four rental plans
(the limited plan and the three unlimited plans) the customer has
signed up for. The Account Type also functionally determines the
customer's monthly account fee. The Movie Queue is the queue of movies the
customer would like to see. The Rental History is a history of the movies
the customer has rented since opening his account. The Rental History should
also indicate which if any movies the customer currently has out. The
customer's Rating should reflect how active a renter he or she is (the more
active, the higher the rating). Like a movie rating, a customer rating should
be an integer ranging from 1 to 5.
This category of data should include the following:
A database transaction can be viewed as a small program (written in
the DML) that either updates or queries the database. Transactions that change
the contents of the database must do so in a consistent manner. Moreover,
transactions should not interfere with one another when running concurrently.
What follows is a breakdown of the user-level transactions that your database
system should support. To make sure transactions maintain the integrity of
the database, you must write them using the SQL transaction structuring
capabilities (i.e., begin transaction, commit transaction,
etc.).
The manager should be able to:
Customer Representatives should be able to:
Customers should be be easily able to
browse your online movie rental system on the web and place orders to rent
movies. In particular, they should be able to readily able to maintain a queue
of movies they would like to see. While they will not be permitted to access
the database directly, they should be able to retrieve the following
information:
Customers should also be able to:
Your database system should provide controlled access to the data by
distinguishing between the different types of users: manager, customer
representatives, and customers.
In addition to the transactions described above, the system
should provide facilities for:
HTML and its successors provide facilities for creating pop-up and pull-down
menus, value lists, input/output forms, labels and customized reports. You
should make use of all of these capabilities, and in the process come up with a
system that caters to users with only limited computer knowledge. The
information you provide to customers should look professional and inviting.
You will be required to supplement your completed database implementation
with a design document that contains information concerning your design
criteria and decisions. The following is a list of some of the information you
should include:
You will also be required to submit a Users Guide that carefully
explains how to use all aspects of the system. It should be understandable by
non-computer experts. Be sure that the user interface (screen design, menu
structure, etc.) is clearly explained.
You will be given three assignments: 1) produce an E-R and relational model of
your system; 2) implement (in SQL) and execute all transactions described in
the above project specification; and 3) implement (using Java, Javascript and
JDBC) the final interactive system to support your online movie rental system.
The due date for the first assignment will be announced shortly; as for the
the other two assignments, the due dates for all three assignments will be
spaced roughly three weeks apart.
All documentation should be on-line. You will also be asked to hand-in
hardcopies when assignments are due.
In order to evaluate your final system, you will be asked to present a short
(15-25 minutes) demo to myself or the TA. This will most likely happen during
the last week of classes or shortly thereafter.
Getting Started
CSE 305 Course Project Competition
Project Specification
1 System Users
2 Required Data
2.1 Order Data
2.2 Movie Data
2.3 Actor Data
2.4 Customer Data
2.5 Employee Data
3 User-Level Transactions
3.1 Manager-Level Transactions
3.2 Customer-Representative-Level Transactions
3.3 Customer-Level Transactions
4 User Access Control
5 Utilities
6 User Interface
7 Documentation
8 Grading
About this document ...
Scott Smolka
Last Modified: Mon Aug 29 11:20:11 EDT 2009