CS 4604 Project Assignment 6

Assigned on November 18, 2008. Demos Start December 2, 2008.

The goal of this step of the project is to interface your database with a programming language and to make it web-accessible. This is the stage where you embed your database into a complete application. PHP is installed on the CS Web server. By this facility, the PostgreSQL database that you have created can be accessed via the web.


FAQ: Can we use our own database server and web server?

Answer: Yes. You are welcome to do the project completely on your own computer. Notice that this step of the project involves having a DBMS (MySQL, PostgreSQL, Oracle, SQL server etc.) and drivers for accessing the database from the programming language you will use to implement your web interface. Depending on how you choose to demo your web interface, your computer may also need to be net-accessible (so that people can access the web pages that are stored in your computer via the world wide web). In addition, you may need to install PHP (if you decide to use PHP for your web interface), and a web server that you can operate on your computer. In short, if your setup allows the facility to create web pages and make them publicly accessible on the Internet, you are in good shape. If you choose this option, you take full responsibility for ensuring that your machine supports all the desired functionalities. We will not be able to accommodate any last minute requests for extensions because something is not working. We provide this option for your convenience, so that you can take advantage of any already existing setup for your project. Do not attempt this unless you are absolutely positively sure of what you are doing. We do not have the resources or the manpower to provide technical support and help in debugging. At the end of the day, we will grade it just like every other project.

FAQ: Can we use ASP/Ruby-on-Rails/AJAX/COMET/substitute-the-latest-buzzword-here/ for the project?

Answer: Certainly! However, you are on your own. We do not have facilities to support these in the lab, nor to provide technical support.

Preparatory Steps:

Help with PHP

We are not learning PHP in class. With your skill and experience in programming, you should be able to pick up a scripting language such as PHP very easily. Here are some good documentation resources: There are different ways in which you can access the PostgreSQL database from your PHP program.

Style Guide for your Application

What we want to see at the end of the day is a single web page, that provides a nice interface to your database. Feel free to do more fancy and creative things, but do so only after completing this "core" requirement. We have a style guide for what this page should look like.

What you should turn in

You have two options:
  1. One team member from your project should send the URL for your web page from where we can access your application. Send email with the information to the instructor and to the TA. Notice that this URL could be located on people.cs.vt.edu or on some server that you run yourself. If you choose the latter option, then it is your responsibility to make sure that the server is up and running when we try to access your web page.
  2. One team member send an email to Haiyan to set up a time for a demo. Expect the demo to last 15-30 minutes. If you choose this option then bring the print-out of your project report to the class on Dec 02, 2008.

What your project will be graded for

Here's the distribution of points:
  1. (30 points) Does everything work correctly and do all the buttons and links that we click indeed do what they are expected to do? We will see if you are really accessing the database dynamically and are not just "looking up" the data from some ready made source. We will ensure this by typing ad-hoc queries. Make sure all integrity constraints are preserved. You will also need to make sure that all query results have column names neatly presented and that data is clearly tabulated.
  2. (20 points) A project report where you summarize all steps of your project in a single document. If possible, include snapshots of your web interface. This report can be easily created by cutting-and-pasting all the previous reports that you submitted, making sure you include the E/R diagram, the details about normalization, your relational schema and, the queries you created in the project. Include the role of each team member in the project. Clearly identify the scope of everybody's contribution. If there were any problems during the course of the project (due to less than complete participation by some team member), identify them. Include your answer to the next question too. You do not need to submit your report separately; just link it from the web page that you turn in from which we can download it. We would like a soft copy because we want to link to these reports and projects from the course web page at the end of the semester. 5 of the 20 points are reserved for neatness, presentation, style, consistency etc.
  3. (45 points) Implement inserts, updates, deletes, etc., or some more complex queries. Make an interface and connect it to the database. You can have a simple interface (with or without any graphics), but fancier interfaces will have a chance to get EXTRA credit points. In your project report, clearly list exactly what you have implemented for this step and how we can test it.
  4. (5 points) Attendance is mandatory for Project Presentations on Dec 02 and Dec 04. There will be a Roll-Call BEFORE the first presentation starts. If you come late, you will lose the points. Please note:
      • One-Member Teams: You have to attend both lectures.
      • Two-Member Teams: Both team members have to attend both lectures.
      • Three-Member Teams: A minimum of two team members have to attend both lectures. The same team member cannot miss both lectures.

You can get upto 50 points of extra credit, depending on how complex your application is. Here are some suggestions for this step:

In you project report, clearly state (in a section titled "Extra Credit") what features you have implemented and why. Include screenshots, if applicable. For example, if you decide to provide a sophisticated interface, clearly state why this interface is "natural" for your application, and how it facilitates the user-experience.