Project Demo Information
To evaluate your project better, we will ask each group to
give a demo which will be scheduled for 20 minutes. Because it is
important for us to verify that each team member can explain the
project, all team members are required to attend the demo, and should
be prepared to present and answer questions.
During the demo, you will first show that no part of the code has been
changed since the deadline. Then you will compile the code (if using Java)
and run the script to create and populate the tables. The TA will use
your interface to test each of the aforementioned operations. Prepare
a demonstration plan to make sure that the entire demo will finish in
20 minutes. You should also bring a printout of the relation
instances. During the demo, we will ask to see the following:
- (1 point) Selection and projection query: Pick one query of this
category and provide an interface for the user to specify the selection condition
(eg. select from Items where quantity >= ___) and the attributes
(eg. select ___ from Items) to be returned. Rerun with at least one other constant
(eg. change from quantity to price) and attribute.
- (1 point) Join query: Pick one query of this category,
which joins at least two tables and performs a meaningful query, and provide
an interface for the user to choose this query
(eg. join the Customers and the Transactions table to find the phone numbers of all customers who has purchased a specific item).
- (1 point) Division query: Pick one query of this category and
provide an interface for the user to choose this query (eg. find all the customers who bought all the items).
Prove that your division results would change based on the data in your database.
You can do it either by inserting a new tuple into or deleting an existing tuple from the appropriate tables.
- (1 point) Aggregation query: Pick one query that requires the use
of aggregation (min, max, average, or count are all fine). Rerun with at least one other example of aggregation.
- (2 points) Nested aggregation with group-by: Pick one query that
finds some aggregated value for each group (eg. the average number of items purchased per customer) and then rerun with a different aggregation.
Provide an interface for the user to specify whether
the average, min, max or count is requested.
- (1 point) Delete operation: Implement a cascade-on-delete
situation. Provide an interface for the user to specify some input for the
deletion operation. Some input values would fail the cascade specification
but others would successfully follow the cascade specification. Provide an
interface for the user to display the relation instance after the operation.
- (1 point) Update operation: Implement a constraint using the check statement.
Provide an interface for the user to specify some input for the update operation.
Some input values would successfully satisfy a constraint while others would fail.
Provide an interface for the user to display the relation relation after the operation.
Note that MySQL 5.5 does not support the Check constraint. If your team is using MySQL 5.5,
keep the check in the SQL statement, but actually do the check at the application level
(and comment it in the code).
- (2 points) Graphical user interface: Create an easy to use GUI that allows the users to
execute all the above operations and transactions. Use the menu facility
provided by the graphics environment you use to define appropriate menus and
submenus. Make sure to design your interface in such a way that all the error
messages appear in separate pop-up boxes, or in a designated area of the main
window, so that they do not
interfere
with the other activities. Whenever user input is requested, make sure that
there is sufficient type checking.
- (3 points) Extra features: Create unique features that your application supports. You can really be creative about this. Some examples are using Bootstrap to prettify your UI, implementing Triggers and Privileges in the database, using any cloud-based databases. See the marking scheme for more examples and the breakdown.
GUIs normally require a lot of time and multiple tries to get them right. We
expect you to produce a simple but adequate interface. You should not spend a
lot of time on the interface itself. You should concentrate on the coding of the
functionality of your project rather than the GUI. The goal of the project is to
give you some experience with SQL and JDBC.
Here are a few tips on how to do well in your (project) demo:
Please note that while your project demo is often the grade that each
member will receive for your project grade, grades may be modified if there are
problems with the code or if there are individuals who have not participated
well within their groups.