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. (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.
  2. (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).
  3. (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.
  4. (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.
  5. (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.
  6. (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.
  7. (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).
  8. (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.
  9. (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.