02170 Database Systems, Spring 2006

Mainpage Course Plan E-bar Software Web Docs Project

Project

In this course you will have to make a project in groups of 2. The project consists of two separate parts:

You can make the project in the e-bar or at home on your own PC. You can start to work on the first part of the project after the second lecture.

The reports (or combined report) should be handed in no later than Friday 02-06-2006. 
The accompanying data/programs should be delivered on a diskette/CD or send by e-mail to hab@imm.dtu.dk
The two parts of the project will be evaluated as a whole.

The Relational Database Project

In this project you design and implement a database for a problem of your own choice.

The problem must be chosen so the process of design and implementation satisfies the following requirements:

  1. An E/R model must be stated.  The problem to be solved has to involve the use of subclasses, (structural) constraints and weak entity sets.  Argue on your choices of entity sets, relationships, many-one/many-many, week/not week, etc.
  2. Convert the E/R model into a relational data model. Specify the relations using SQL to denote the primary and foreign keys. Investigate the resulting tables, analyze the needs of decomposition, and do the appropriate normalizations. State which normal forms your relations satisfy.
  3. Implement the database using SQL.  Enter some data into the database and show a set of queries covering the full use of the implemented system. Some queries must use grouping and aggregation.
  4. Parameterise your queries (from 3) and add them to your database as stored procedures (in SQL).
  5. Make a small client program in Java (using the JDBC-api) to extract information from your database (and may be also to update your database).

A proposal to a problem could be to make a music database with information on e.g. pieces, composers, performers, kinds of pieces (classic of different types (opera, symphony, concert, …), non-classic (jazz, musical, rock-and-roll, rap,…), artists, orchestra/band, time period, CD’s, etc. Is it possible to delete from your database information on composers, bands etc. without destroying the consistency of the database?

The database above could be applied as is when it should hold e.g. a private collection of CD's. You could also consider the above mentioned database as part of a library database. Then the database should also hold information on which CD's are available on the shelves, the lending's, and a borrower's register. The system then must be able to update information about lending's and borrower's.

Your solution is expected to be a report (written in English) where you explain the steps mentioned above together with your results of each step. The introduction of your report must contain an informal introduction to the problem domain you have chosen stating the limitations you have introduced. The closing section should hold a conclusion.

 

The XML Database Project

Here you implement an XML semi-structured database for a topic of your own choice. It could be the same topic as you used in the relational database project. The process of design and implementation must include at least the following points:

  1. specification of an XML Schema
  2. the construction of some concrete XML-documents
  3. the validation of the documents against the XML schema
  4. several examples of queries (in XQuery) to the actual XML-documents

You could furthermore put your data in an XML-database like eXist and make a small client program in Java to extract information from your database (and may be also to update your database).

 

Below is a proposal for a rather big project that would illustrate the power of XQuery (an extract of a project from a previous course 02288: Advanced Databases).

An XML Semi-structured Database for Study planning

Problem Background

Imagine the following hypothetical situation:

The Technical University (DTU) is considering to set up a rather ambitious system, which can help the students plan their study at the university. The system will be based on an XML semi-structured database containing different kinds of information about the student, courses, topics, departments etc.

The database will integrate information from already existing sources and new information must be provided:

·   Course descriptions: the official DTU descriptions and course descriptions provided by the teachers/DTU departments.

·   New information about departments, courses, subject areas and how these are related and may be also information about official curricula.

The student should be able to make a logon and get a personal planning system. When making a logon the system will use information about the student. This information may also come from different sources:

·     from the study office information such as

o      which courses the student has passed,

o      Danish or non-Danish speaking

·     information the student has provided to the system when he registered to the system. That information should include the student’s “study goal”, e.g. in the form of

o      a list of advanced courses the student would like to attend when he has passed the prerequisite courses.

o      subject area(s) in which the student is interested

o      the “fagprofil” the student wishes to obtain

The system must provide some standard queries which

·   help the student to plan the course sequence for several years

·   help the student to plan which courses to attend for next semester

·   help the student to relate courses and subject area in different ways.

Information that relates courses and subject area will usually be provided by the different departments may be in the form of a detailed list/hierarchy of concepts from the department’s subject areas and the relation of these concepts to the courses given by the department.

Some of the standard queries provided by the system could e.g. be the following:

·   courses which the student can follow next semester, given his profile (passed courses, language etc.) and information from the course descriptions about which semester a course is running (and may be even/uneven year).

·   courses which the student can follow (as above) and which contribute to the fulfilment of the students study goal.

·   all the courses the student still needs to fulfil his study goal

·   all courses about topics in which the student is interested

·   if the student want to attend some specific course next semester, will that conflict with the fulfilment of the study goal?

·   all the departments that give courses which contribute to the student’s study goal

Some queries may need some extra input. Consider queries that relate course and topic:

·   Given a general topic T (like biotechnology) which courses are related to this topic? Given a very specific topic T (like Xquery) in which course(s) is this topic addressed.

Your Task

Imagine that you are employed at a software company, which is about to make a bid for the pre-qualification stage for the study planning system. You are made responsible for making a small demo version for such a study planning system and write a report. Since this is a pre-qualification, only, you are NOT supposed to make a complete system with information about all courses/departments/subject areas etc. and with all the features/possibilities of the final system. The purpose of the demo-version and report is rather to convince the bid evaluators that you are competent to make the final system.

You and your manager agree that you could e.g. make the following tasks, but he leaves the details to you, and he also encourages you to show some creativity.

Tasks to do:

  1. Make XML-documents containing examples of the different kind of data needed in the system such as course descriptions (study office, teacher), department information, subject areas/topics and relation to courses, student info etc. Notice, the contents of the XML-documents don’t have to correspond to the “real” world, e.g. in the DTU course descriptions, the text under AIM and CONTENT isn’t relevant. It is the overall structure that counts.

  2. Some of these documents (like the DTU course descriptions) have a known structure because in the real system they will be taken from an existing external source. Other documents must be carefully planned by you so it will be possible to make the intended queries to the system. You should make a DTD or an XML-schema describing the structure/type of the document (and validate the actual XML-document against the schema).

  3. Construct several of the standard queries in XQuery.

  4. Make a demo implementation. There are several possibilities: Implement the database as files and simply run your XQueries on an XQuery engine or use the eXist database.

  5. Show how results from the queries may be shown in a browser. Either let the constructed results be XHTML or transform XML results to XHTML using XSLT. What is best? (outside the scope of this course).

  6.  Finally you should write a report that documents the demo system and indicate how it could be extended to a complete system and also discusses the concepts/principles used. The purpose of the report is (together with the demo) to convince the bid evaluators that you are competent.
    (In the real world I am the bid-evaluator and I have to give you a mark in the 13 scale. The only way I can see how much you understand of the lectured topics is by reading your report and inspecting your demo-implementation).

 

 

 

Hans Bruun     (  hab@imm.dtu.dk ) 13-02-2006