|
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.
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:
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.
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:
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).
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.
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:
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.
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).
Construct several of the standard queries in XQuery.
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.
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).
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