CS 4750 - Semester Project Information
During the course of the semester, you will be expected to complete a project involving the creation of a database-related system. You will be provided a MySQL database account and web space that will be PHP enabled on CS servers. The project will entail the design of a database, with all accompanying evidence of its good design, along with a front-end application (this does not have to be a website) that will interface with the database through record gathering, inserting, deleting, etc. The project can either be done individually, or with a partner, depending on your availability to work with others. The project must be complex enough so that it is not a trivial exercise, but cannot be so complex as to take longer than one month of effort.
This can be either an individual or partnered project. Partners will be expected to do more than individuals and will be graded accordingly. The objective is to design, implement, populate, test, and document a database of your choosing. The database can be for a situation and domain of your choosing. The project should not be trivial, nor should it be so ambitious that you cannot complete it in two month's time.
Your project will consist of:
- A database that you create in MySQL (all groups will set up their database on our MySQL server - no exceptions) that is populated with relevant data; and
- A well-designed application to interface with your database - this can be a stand-alone or web application - that is relevant to the "world" that you created your database for.
- Requirements Document (including a complete description of the "world" to be modeled in your database with a discussion of who might use your database);
- Explanation of design decisions that you made in creating your application (i.e. why you choose the type of app you did, why that language, if your database should be secure, did you secure it and how, anything interesting or relevant, etc.);
- A description of your testing procedures for both the database and application;
- An E-R diagram;
- Database schema including integrity constraints;
- Proof that your database is in BCNF, 3NF, or other normal form;
- Sample data and sample queries from your application; and
- For partner projects, a candid evaluation by each member of the contributions of all other members.
Possible Project Topics
Ideas to be posted here...
Note: You can request a certain browser for me to grade your project with, a Mozilla-varient, an IE-varient, Opera, or Chrome.
Your project grade will be 75% for the database and application and 25% for the documentation. To get full credit for the database and application, your database should be well designed (and proven so in the documentation) with enough relevant data to show that it does work properly. The application should be well-designed, free from technical errors, thoroughly tested, and should be good enough that, if this were a real-life project, you would be proud to turn it in to your boss. (i.e. doing little things to make your project stand out from the others is a good thing.) To get full credit for the documentation, it should be free from grammatical errors, contain all necessary information, and your train of thought in developing the application should be apparent.
- At least ten tables (5%) - Rather self explanatory
- Good data (5%) - Populated with enough different data to prove your queries work properly
- Database should be in Third Normal Form (note: if you're in BCNF, you're in 3NF) (10%) - You should have good database design
- Database Security (10%) - Proper user management must be enforced for access control to sensitive data
- At least two specialty commands / features (10%) - Triggers, Views, Constraints, MySQL special commands, stored procedures
- Data should be relevant (US phone numbers have 10 digits, etc.)
- Your data should be also relevant to whatever you are doing
- You should have tables of different things, not just five tables of the same info
- Able to retrieve applicable records for a given scenario (5%) - Have to be able to test database connectivity
- Able to add a record to at least one table (5%) - Have to be able to test database updating
- Able to do other relevant functions (delete, update, etc.) (5%) - Do something neat to impress
- Able to export data in some form (5%) - Export XML, JSON, etc.
- Interactivity (5%) - Your app must have a degree of dynamic data selection based on user action (i.e. AJAX-y stuff)
- Good design and work (10%) - Your program should be well thought out, pleasing to look at, and not break when used. Having an app that just has forms with no real design behind it is NOT sufficient. It should be obvious that time was spent to make your application look nice and work well.
Part I - Project Information
- Introduction (2%) - Describe the world you are trying to model. Include everything that you feel is relevant. This should be around 1/2 to a full page.
- Requirements Document (3%) - List of functions, requirements, user stories, use cases, etc. that your application must fulfill. This must be at least 1 page (otherwise you have a really small app and that's not good), but doesn't have to be terribly much longer. Make sure to talk about your security measures, special functionality, and how you export data!
- Explanation of design decisions that you made in creating your application (i.e. why you choose the type of app you did, why that language, if your database should be secure, did you secure it and how, anything interesting or relevant, etc.) (2%) - Show me your thinking as to why you did certain things. Probably around 1/2 a page.
- An E-R diagram (5%) - Make sure you model EVERYTHING in your database! Don't leave out stuff!
- Database schema including integrity constraints (2%) - Just give me the schemas straight from your database with things like primary key, unique, not null, etc. Easy 2% here.
- Proof that your database is in Third Normal Form (5%) - Take your tables and perform the tests we went over in class. Be thorough. Do NOT skip steps.
- A description of your testing procedures for both the database and application (2%) - If you didn't test, you didn't do good design. You don't have to go into unit tests, etc., but just give me a general idea of what you did to make sure that everything works.
- Sample data and sample queries from your application (2%) - Give me an idea of what your database does without having to load it.
- Grammar, spelling, etc. (2%) - Your document should be proofread and free from error.
Suggested Project Schedule
By February 14...
- Documentation Introduction
- Requirements Document
- E-R Diagram
- Setup at least ten (different) database tables
- Populate the database table with good data
- Add special SQL command (trigger, assertion, constraints, etc.)
- Print out the schema using phpMyAdmin and add it to your docs
- Setup limited user to access the DB
- Program first pages of your site, including SQL to do a select from the DB
- Finish coding the SQL commands (insert, update, more selects, etc)
- Do the 3NF proof to show that your DB is in good form
- Reporting functionality
- Finish coding
- Test your application - write down what you do
- Copy your SQL commands out of your app and put them in your docs, with example result sets
- Actually finish coding...
- Put together final doc and proofread