CSC 4480-002: Principles of Database Systems

Spring, 2018


Term Project



Introduction

The project is divided into 16 milestones, or phases, numbered 00 to 15, to be submitted by the dates indicated. Phases 00, 08 and 15 are to be done individually. Your grade on those phases may be different from your teammates', of course. In general, the other phases' grades will apply to all members of your team, but I may tweak them if some members seem to be doing more or less than their share.

Each submission (other than 00, of course) must have the team name, the date and the phase on it. In general, submissions must be made by email any time before midnight (part of the grade depends on punctuality) on the due date, unless other instructions are explicitly given. Please also do the following:

Sometimes you may 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, you'll have a copy of anything you're submitting, in your "Sent Mail" folder. Note that some due dates aren't necessarily a Monday. That's so we can coordinate the project topics with the lectures and exams.

It's probably a good idea for each team member to keep a log of who has done what on which phases; it will come in handy for phases 08 and 15. Also, keep a log of your team meetings: time, place, technology (Skype? Zoom? in person?) and major accomplishments. This will be useful for phases 07 and 13.

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 text should be word-processed). There are software products (Visio and various freeware as well) for creating them, and even MS-Word and MS-PowerPoint work OK; but it's also OK if you produce them by hand, if they're extremely neat and legible. In that case, you'll scan them and send them to me as pdf or jpg files.


Phase Title Due Date Points worth
00
status report
(Noon, on Thursday, Jan 25)
3
01
teams, topics
Jan 29
5
02
requirements
Feb 5
4
03
ERD
Feb 12
14
04
relational database schema
Feb 26
6
05
schema implementation
Mar 13 (right, Tuesday!)
8
06
populating the database
Mar 20 (")
8
07
midterm report of team meetings
Mar 27 (")
4
08
midterm report of individuals
Mar 27 (")
10
09
other conceptual schemas
Apr 10 (")
13
10
query implementations
Apr 24 (")
10
11
database programming
May 1 (")
15
12
FD's and NF's
May 3 (right, Thursday!)
12
13
final report of group meetings
May 3 (")
4
14
group presentations
(May 10, Thursday, 8:30-10:00 AM)
13
15
final report of individuals
Noon on Friday, May 11
7
TOTAL


136




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 consist of three or four members. Your job on this phase is to send me the list of your group members, by noon on Thursday. The list can have four names, in which case it'll be pretty permanent; or three, in which case I may add another member to it; or two, in which case I'll add another one or two; or one (just mention in your submission that you haven't been able to hook up with a group), in which case I'll assign you to a group.

A couple of notes:

I'll finalize the groups in time for you to work together on phase 01.

Phase 01) Teams, topics and roles

Here are some sources for topics:

a) R. Sunderraman, Oracle10g Programming: A Primer, describes many different projects. 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. They might be listed under the heading "Edited and approved project scenarios." Don't lift one verbatim, but they might inspire some ideas.

c) Think up one of your own.

Give your topic and its source (a particular reference, a real-world situation, just fiction, or ...). Also, choose a team name. Some recent ones have been The Seg Faults, Hotel SQLifornia, and SQL Injectors. There's no need to submit a description of your enterprise yet (see the next phase).

Phase 02) Requirements

Describe the ingredients of the enterprise. The scope should be somewhere in the middle: not a killer situation (many, if not most, initial ideas are too complex for a term project), but at least as complex as the "COMPANY" example in our text. You can find it in Section 3.2 in the 7th edition. The resulting ER (see the next phase) should have relationships that represent varied cardinality and participation constraints.

Phase 03) ER model

The deliverable here is the diagram. Indicate keys and classify relationships in the usual ways. Use the Chen (standard) approach here. Include, too, some narrative if there are 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. Also: if it becomes clear that your ER is becoming way too complicated, then simplify Phase 02 somewhat, and resubmit it. And similarly, in the rare event that your ER is not rich enough, then modify Phase 02.

Finally, the TA and I are requesting that you send the ERD as a doc or docx or pdf or jpg or png file. If you use a different drawing tool to create it, you should be able to save it in one of the formats above.

Phase 04) RDB schema diagram

Once you get my approval of the ERD, convert it 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 is available for you on the departmental UNIX cluster, as is MySQL. Both of those DBMS's are also available from the vendors for download to your laptop or PC. 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. Oracle has better departmental support (the TA will be able to field your questions), but if you're sure you prefer MySQL and understand that you'll largely be on your own, 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, as well as the TA (user name TBA) and me (GOELMAN, for Oracle). Set up your database schema on this software, hand in the SQL scripts and screen shots to illustrate the schema implementation, and explain where and how referential integrity constraints have been incorporated.

One more thing: Along with this phase, submit your most recent, correct version of Phase 04 (relational database schema, on paper).

By this point, you should have been successful in logging into your UNIX account, and your Oracle one as well. It's not necessary to send any email message to show me that you've made it to csdb, but I will check the system log. If it shows that you have indeed logged into csdb, this will account for three of your ten 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 worked better for you.

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. Include a description of how meetings took place (in person? Skype? other technology? a mix of technologies?)

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) Other conceptual schemas

There are four parts to this phase:

Note: This phase is just on paper. We won't be going forward with it.

Phase 10) Query implementations

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

Phase 11) Database programming

Incorporate some (but not all - two are enough!) of these features: JDBC; front ends; PL/SQL; sqlplus formatting; forms; reports; triggers, and other helpful or spiffy features. There should be some interactivity between your program and a user. If someone on the team has Web programming experience, a GUI would be nice, but it's not necessary (remember, this isn't the Web Programming course). The deliverables here are

Note: Again, be sure the TA and I will be able to compile your source listing and replicate your results.

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.

Phases 13 and 15) 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. Since these will be coming in before projects are actually presented, they won't reflect that portion of your experience. However, feel free to email me with any changes in your reflections.

Phase 14) Presentations.

Click here for the details.

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 (20 points from 00, 08 and 15) will be credited towards your course grade, but the total of the group phases (the remaining 106 points) may be "tweaked," depending on my perception (and your teammates') of your contribution.

Back to CSC4480-002 main page
 


Last updated Apr 30, 2018