CMSI 486: Database Project Page
Project Basics
You will be responsible for designing, documenting, and implementing a database of your own this
semester. The idea is for you to get hands-on experience with the process of actually going through
the entire process. To that end you must do the following:
- Come up with an idea for a database, and get it approved with the instructor
- Design the database
back end
whether it be tables, collections, graphs, or whatever
- Document the design in a design document; this will be explained during the semester
- Keep track of all code and documentation in a GitHub repository; note that this *must be*
a public repository. If you are working on something that has proprietary data,
that's fine, you don't need to check your dataem> into your git, but you *DO* need
to check your CODE into your git!
- Develop some kind of interface so that I can test your database. I don't care if it's a
web-based front end, or some simple command line implementation, or some conglomeration of
both [also known in the industry as a
Kludge
] but I MUST BE ABLE TO PERFORM SOME
QUERIES AGAINST YOUR DATABASE AND SEE THAT THE RESULTS ARE CORRECT.
- A good way to document things in GitHub is using the Git Wiki page that is part of your git
repository. There are other ways, too, including [*gasp*] what's known as a
notebook
,
so whatever floats your boat is fine, as long as it's documented!
- Part of the documentation should be a
user's guide
which will tell your customer
[i.e., the professor] how to install all the parts of your database, how to load data, how
to start any server you are using, what dependencies are required, and so forth. This should
be as complete as possible, so that I can simply read your user manual and follow the steps
to implement a successful copy of your project.
- PLEASE WORK IN PAIRS! This doesn't mean one person does the documentation
while the other one does the
real work
of implementation. It means, BOTH of you will
work on ALL PARTS together.
- You may use whatever type of database your little hearts desire. I don't care if it's MySQL,
PostGreS, Mondo, Cassandra, Neo4J, Microsoft SQL Server, or anything else that is considered
a
real-life, professional grade
database. I won't accept Microsoft Access or Excel,
since those aren't really databases [IMHO, although Access comes pretty close].
- PART OF ANY PROJECT is proper project management. Without being totalitarian
about it, you should have some sort of project plan in place, which should be included in
your repository. FOR YOUR OWN BENEFIT, this should include some type of regular status report
so that you can track your progress. In addition, because you are working in teams, you will
need to have regular meetings – BE SURE TO DOCUMENT WHAT GOES ON IN THOSE MEETINGS so
you can remember design decisions, who is doing what, when it is supposed to be done, etc.
- Finally, make sure that you BOTH have the same knowledge! Either one of you should be able
to take over the other's tasks in case one of you gets hit by the proverbial bus.
Schedule of Deliverables
The following deliverables will be due on the dates indicated:
- Preliminary Database Design document: October 16
- Detailed Database Design document: November 06
Includes the Data Dictionary
as appropriate
- Database Demonstration: November 25 & 27
Document Section Descriptions
Preliminary Database Design
You must have the following as part of your preliminary design:
- 1.1 – Project description, database engine used, potential users, maybe some other stuff
- 1.2 – Data description, generally what type of data will be stored
- 1.3 – At least five examples of the type of data your database will provide to the user
- 1.4 – A preliminary idea of the schema of the database including table descriptions and potential columns
- 1.5 – A complete preliminary Entity-Relationship Diagram [ERD] for the database [NOT hand-drawn, PLEASE!]
Detailed Database Design
You must expand your Preliminary Design in a new copy of the document to have the following as part of your
detailed design:
- 2.1 – Project description, database engine used, potential users, maybe some other stuff
- 2.2 – Data Dictionary, meaning a bullet list of the final tables/columns with a complete description of each
- 2.3 – A complete finalized Entity-Relationship Diagram [ERD] for the database [NOT hand-drawn, PLEASE!]
Preliminary Database Demonstration
You will demonstrate your database in class, showing that the queries from section 1.3 of your document all work and will
return the data you expect. I may also ask you to execute a query on the spur-of-the-moment.
Some Suggestions for Possible Implementations
The following list contains some ideas for you to consider. They are all fairly involved, and
will be challenging for you to work with and get good experience with designing and building your
project. If you have another idea that you want to do, that's fine, as long as it is reasonably
comprehensive.
- Hospital or Doctor's Office
- School or University
- Library
- Car Repair Shop
- Stock Market
- Sports Teams
- Horse Racing
- Music CD Catalog
- Video Catalog
- Product Inventory
- Social Network Connections
- Movie Database
- Asset Location
- Human Resources/Personnel