CSC 8490: Database Systems and File Management

Fall, 2009


Project: Design and Implementation of a Database



Introduction

The project is divided into 17 milestones, or phases, numbered 00 to 16, to be submitted by the dates indicated. Phases 00, 08 and 16 are to be done individually.

Each submission must have the team name, the date and the phase on it. In general, submissions may be made by email or hard copy any time before midnight (part of the grade depends on punctuality) on the due date. Please also do the following:

Sometimes you'll be resubmitting earlier phases, to correct bugs that you or I have flagged. Please label these carefully as such. It also might be helpful to add a note explaining exactly what's been changed. Of course, it's a good idea to keep a copy of anything you're handing in. Note that some due dates aren't necessarily Tuesdays. That's so we can coordinate the project topics with the lectures and exams.

Finally, I expect everything to be typed/word processed. The only exception would be ER, EER, and UML class diagrams (and even in those files, the portions that are just text should be word-processed). There are software products (Visio and various freeware as well) for creating them, but it's OK if you produce them by hand, if they're extremely neat and legible.


Phase Title Due Date Points worth
00
status report
Aug 29 (Saturday)
5
01
teams, topics, software, roles
Sep 1
8
02
miniworld
Sep 8
5
03
ERD
Sep 8
14
04
relational database schema
Sep 22
5
05
schema implementation
Sep 29
6
06
populating the database
Oct 6
9
07
midterm report of team meetings
Oct 22 (Thursday)
5
08
midterm report of individuals
Oct 22 (Thursday)
7
09
query implementations
Oct 27
12
10
other conceptual schemas
Nov 3
14
11
database programming
Nov 10
16
12
FD's and NF's
Nov 17
12
13
ODM
Dec 1
10
14
presentation files
Dec 15
12
15
final report of group meetings
Dec 16 (Wednesday)
5
16
final report by individuals
Dec 16 (Wednesday)
5
TOTAL


150




Phase 00) Status report

We need to form the project teams rather quickly, so that the first phases can be completed by next week. Here is the current lineup of groups and topics.

Let's figure that each group will initially consist of three members, but I'll add a fourth one as needed.  If you are unable to find or complete a group, let me know, and I'll assign you at random to one of the existing groups. You should also send a broadcast about your need for a group to the class, at fall09-CSC-8490-001@villanova.edu. Tell them a little about your background and interests.

Your submission on this phase should include the names of all the members of your group, spelled correctly. Alternatively, I need to know if you aren't yet on a team but have sent a broadcast to the class (as suggested above) with your interests and meeting constraints. In this case I will place you myself.

Phase 01) Teams, topics and roles

Here are some sources for topics:

a) R. Sunderraman, Oracle9i Programming: A Primer, 2004, describes many different projects in Chapter 9. Other editions (for other releases of Oracle) are pretty similar in their project descriptions.

b)  The database course at Humboldt State University has many good ideas.

c) Think up one of your own.

Give the source of your topic (one of the references above, or some other reference, or a real-world situation you're basing your enterprise on, or just fiction).

Also due with this phase: the role of each group member. Include this information:

Phase 02) Miniworld

Describe the ingredients of the enterprise. The scope should be somewhere in the middle: not a killer situation, but at least as complex as the "COMPANY" example in our text. The resulting ER (see the next phase) should have relationships that represent varied cardinality and participation constraints.

Include the types of queries and reports anticipated.  Remember, appropriate requirements at this stage will help minimize later changes. 

Phase 03) ER model

The deliverable here is the diagram. Indicate keys and classify relationships in the usual ways. Include, too, some narrative describing any additional assumptions you've made and any information which the ER diagram may not be rich enough to convey. Like the previous phase, the more care you take here, the fewer revisions necessary later.

Phase 04) RDB schema diagram

Convert your ER model algorithmically to a relational database schema. Submit this schema (with key and referential integrity constraints indicated in the usual way). Include the most recent version of your ERD (Phase 03).

Phase 05) Schema implementation

Oracle and MySQL are available for you at Villanova. Get well enough acquainted with at least one of them so that you can choose one as the DBMS for implementing your team project. See the links near the bottom of this web page as a start. I am recommending Oracle to you because of better departmental support (Sunil should be able to field or your questions), but if you're sure you prefer MySQL, I'll permit it. Report on your choice and reasons, and explain how all team members will have access to this common database. If you're in Oracle on csdb, for example, you shouldn't be using the common "SCOTT" account. The tables should be in one of the team member's accounts, with the appropriate GRANT commands allowing the teammates to access them. Set up your database schema on this software, hand in the SQL scripts and/or screen shots to illustrate the schema implementation, and explain where and how referential integrity constraints have been incorporated.

By this point, you should have been successful in logging into your UNIX account, and your Oracle one as well. Send an email message from your departmental UNIX account to the TA. This will account for two points on phase 08, since it's an "individual" submission (but it's due now).

Phase 06) Database instance

Populate your database.   The instance should be nontrivial (it too should be at least the order of magnitude of the COMPANY database of our text).  Hand in

Use a loader utility, or explain why your alternate approach was better.

Phase 07) Midterm report of group meetings

On behalf of the group, the recorder submits her/his accounts of the group meetings up to this point.

Phase 08) Midterm report of individuals

I'll distribute a survey asking each individual some questions about the experience within the group. It's meant to be confidential, so submit this phase only to me (no cc to the TA).

Phase 09) Query implementations

Phrase four queries, at least three of them fairly challenging (eg., grouping, aggregates, subqueries, negatives) logically, in English.  Give SQL translations of them, and indicate their implementation and solutions (a script file would be appropriate).

Phase 10) Other conceptual schemas

There are four parts to this phase:

Phase 11) Database programming

Incorporate some (but not all!) of these features: JDBC; front ends; PL/SQL; sqlplus formatting; forms; reports; triggers, and other helpful or spiffy features. The deliverables here are

Phase 12) FD's and normal forms

Resubmit your relational database schema diagram (Phase 04). Next, for each table in your schema, list all the functional dependencies.  Identify candidate keys and normal forms.  If the NF is less than 3, describe some potential anomalies and provide and discuss a decomposition that is LJD and FDP into 3NF or BCNF.

Phase 13) Object Data Model

Consider what the conversion of your UML class diagram from phase 10 into ODL would entail. If the result would be more than eight classes or so, then "crop" the diagram (but keep at least one of the specializations). Submit the original or cropped diagram, together with the appropriate ODL.

Phase 14) Presentations.

Click here for the details.

Phases 15 and 16) Final experience reports

These are the counterparts to phases 07 and 08. The recorder will submit minutes on behalf of the group of meetings that took place since the midterm. The individual surveys (which I'll be distributing, like the midterm ones), though, will reflect the whole semester experience.

Learning about Oracle and how to access it on csdb.csc.villanova.edu)  Your "login" (that's UNIX lingo for "username") on the department's UNIX cluster is the first letter of your first name, followed by up to the first seven letters of your last name. Your password has either been set (for new acounts) or reset (for old ones) to SU followed by your eight-digit student ID (what you use for Novasis). The first time you log on, you'll be prompted to change that password. You can find further information here on using the UNIX cluster and here on using Oracle there.

Learning about MySQL at Villanova) There's some information here.

Individuals and groups) Remember, your group is depending on you. It's important that everyone contribute time and energy. Your grades on the individual phases (15 points from 00, 08 and 16) will be credited towards your course grade, but the total of the group phases (the remaining 135 points) may be "tweaked," depending on my perception (and your teammates') of your contribution.

Back to CSC8490 main page
 


Last updated Aug 27, 2009