Database Systems, Spring 2003


Lecturer · Time and place · Course description · Schedule · Literature · MySQL · JDBC · Evalutation

Lecturer

Rolf Fagerberg.

Time and place

Tuesdays 12.15-14.00 in D1 and Thursdays 09.15-10.00 in D4.

Course description

This course will give a comprehensive introduction to the theory and practice of databases. Among the subjects covered are:

Schedule

Week Date Topics Exercises Reading
6 February 4 Introduction (slides: ps.gz, pdf). Entity-Relationship Model (Ullmans slides: html) .   Chapter 1 and 2 in [GUW].
  February 6 The relational model. Conversion from E/R (Ullmans slides: html). Functional dependencies (Ullmans slides: html).   Sections 3.1-5 in [GUW]
7 February 11 More on functional dependencies (Ullmans slides: html). Boyce-Codd normal form, third normal form (Ullmans slides: html).   Sections 3.5-6 in [GUW]
  February 13 Fourth normal form (Ullmans slides: html). Relational algebra (Ullmans slides: html).   Sections 3.7 and Sections 5.1-3 in [GUW]
8 February 18 More on the relational algebra. Start on SQL (Ullmans slides: html). Exercise 2.1.1-2 in [GUW], question 8-12 in the midterm exam of Ullmans Fall 2001 course (ps), question 1-3 and 18-19 in the final exam of Ullmans Fall 2001 course (ps). Sections 5.4-5 and Sections 6.1-2 in [GUW]
  February 20 More basic SQL (Ullmans slides: html and html).   Sections 6.3-7 in [GUW].
9 February 25 Constraints and triggers in SQL (Ullmans slides: html). Exercise 6.1.3, 6.2.2, 6.3.1, and 6.4.6 in [GUW]. Try out your answers in mySQL (your can use these files with the data from Figures 5.10 and 5.11 (a and b): txt, txt, and txt). Solutions: Ex_6.1.3, Ex_6.2.2, Ex_6.3.1, Ex_6.4.6. Chapter 7 in [GUW]
 February 27 Privileges (Ullmans slides: html). Transactions (Ullmans slides: html).   Sections 8.6-7. in [GUW]
10 March 4 SQL and programming (Ullmans slides: html and html, JDBC example and its output when run on the data from Exercise 5.2.1).   Sections 8.1-5 in [GUW].
  March 6 Object-oriented DBs (Ullmans slides: html).   ODL and OQL parts of Sections 4.1-5 and Chapter 9 in [GUW].
11 March 11 Object-relational model (Ullmans slides: html). Semistructured data and XML (Ullmans slides: html). Exercise 8.5.1 in [GUW]. Some solutions: Ex_8.5.1.a, Ex_8.5.1.e, Ex_8.5.1.fRest of Chapter 4 and 9 in [GUW].
  March 13 More XML: XPath, XQuery (Ullmans slides: html).   Xpath and XQuery is not in [GUW]. See [MS] for an overview of these and other XML technologies.
12 March 18 Data warehousing (Ullmans slides: html). Start on Datalog (Ullmans slides: html).   Chapter 20, Sections 10.1-2 in [GUW].
  March 20 Recursion in Datalog and SQL.   Sections 10.3-4 in [GUW].
13 March 25 External Memory. The I/O model. Excercises 10.1.1 (only b, d, f, h ), 10.3.2, and 10.3.3 in [GUW]. Sections 11.1-3 in [GUW].
  March 27 Multi-way Mergesort. Speeding up disk access.   Sections 11.4-5 in [GUW].
14 April 1 Disk recovery and RAID. Data representation.  Sections 11.6-7 and Chapter 12 in [GUW].
  April 3Index structures, B-trees.   Sections 13.1-3 (except 13.2.4) in [GUW].
15 April 8 Hashtables. Grid files, partitioned hashing, multiple-key indexes.   Sections 13.4, 14.1-2, and 14.3.1-2 in [GUW].
  April 10 kd-trees, quad-trees, R-trees.   Sections 14.3.3-8 in [GUW].
16 April 15 No lectures (Easter vacation)    
  April 17 No lectures (Easter vacation)    
17 April 22 Bitmap indexes, inverted indexes. Query execution.   Sections 14.4, 13.2.4, 15.1-6, and 15.8 in [GUW].
  April 24 Query execution on parallel machines. Buffer management. Start on query compilation and optimization.   Sections 15.9, 15.7, 16.1, and 16.3.1-2 in [GUW].
18 April 29 More on query optimization.   Sections 16.2, 16.3.3, 16.4, and 16.5.1-3 in [GUW].
  May 1 Even more on query optimization.   Sections  16.5.4 and 16.6-7 in [GUW].
19 May 6 System failure recovery.   Chapter 17 in [GUW].
  May 8 Concurrency control. Locking schemes.   Sections 18.1-3 in [GUW].
20 May 13 More on locking schemes.   Sections 18.4-7 in [GUW].
  May 15 Dirty data and recoverability. Concurrency control by timestamping.   Sections 19.1 and 18.8 in [GUW].
21 May 20 Concurrency control by validation. View-Serializability. Deadlock handling. Distributed databases.   Sections 18.9 and 19.2-5 in [GUW].
  May 22 More on distributed databases. Guidelines for database design and tuning.   Sections 19.6-7 in [GUW]. Chapter 16 in [EN] and Section 21.2 in [SKS]. See also [R] for further guidelines on database design.

Literature

Our main literature is the book
[GUW] Hector Garcia-Molina, Jeff Ullman, and Jennifer Widom: Database Systems: The Complete Book. Prentice-Hall 2002, ISBN 0-13-031995-3.
The website of the book contains many resources, including a list of errata and solutions to selected exercises in the book. We will be using the fine material on this website extensively, in particular Jeff Ullmans slides from Fall 2002.

For XML and related technologies, the following notes provides a good overview:

[MS] Anders Møller, Michael I. Schwartzbach: The XML Revolution - Technologies for the future Web. Online notes at www.brics.dk/~amoeller/XML/.

For a discussion of database tuning, we use excerpts from the following two books. Handouts can be obtained at the lecturers office.

[EN] Ramez Elmasri, Shamkant B.\ Navathe: Fundamentals of Database Systems, third edition. Addison-Wesley, 2000, ISBN 0-8053-1755-4.
[SKS] Abraham Silberschatz, Henry F. Korth, S. Sudarshan: Database System Concepts, fourth edition. McGraw-Hill, 2002, ISBN 0-07-228363-7.
The online Chapter 2 (pdf) from
[R] George Reese: Java Database Best Practices. O'Reilly, 2003, ISBN 0-596-00522-9.
also contains useful guidelines for the database design process.

MySQL

We will be using the open source relational database mySQL during the course. MySQL is installed on the computer system of the department (see instructions for use). Alternatively, it may be downloaded and installed on your own machine at home. MySQL comes with ample documentation.

JDBC

For database programming, we will use Java and JDBC. Java 1.4 is installed on the computer system of the department (if you are not able to run javac and java, then invoke the command /usr/local/bin/daimi-setup --addon java to set things up for your account). Alternatively, it may be downloaded and installed on your own machine at home. For information on using JDBC with mySQL, see these instructions. For general information on how to use JDBC in Java, see e.g. the nice introduction from SUN, and the documentation for the java.sql package of the Java distribution.

Evaluation

The evaluation of the course is in two parts.

For the first part, you have the option of either doing a programming project (ps.gz, pdf) in a group of two persons or individually handing in solutions to the entire midterm exam (ps) and question 1-8 of the final exam (ps) from Jennifer Widoms Spring 2000 course. In both cases, the deadline for the first part is April 8. The actual subject of the programming project is negotiable - if you have ideas for another project of similar size which would make more sense to you (e.g. would be useful for you), come talk to the lecturer.

The second part consists of a series of exercises (ps.gz, pdf) from the textbook, to be solved individually by each student. The deadline for the second part is June 3.


Page maintained by Rolf Fagerberg <rolf@brics.dk>.