Peter Baumann
 
 
home profile publications research teaching service awards

Databases (BSc)

| Lecture slides | Project | Exams | Literature | Extra links ]

Course topics: database services, database design (ER, UML), SQL, relational design theory, transaction management, web frontends, NoSQL, and selected special topics.

This course introduces into (relational) database systems in theory and practice, with special emphasis on Web-based applications. In the accompanying project work, design and implementation of database and Web service components will be addressed, culminating in a sample database-enabled Web service based on the LAMP open source package. This course is recommended for all students specializing in computer science.

The course requires basic knowledge about algebraic expressions and laws, basic data structures like trees, object-oriented concepts, as well as - for the lab work - HTML and Linux.

Lecture slides

[ Introduction and Project intro | Database design | The relational model | SQL | Database application development | Web as frontend to database services | 3-tier architectures | Relational Algebra | Query processing | Database storage | Physical database design, see also this post | Normal Forms | Transactions | Security | NoSQL | XML, XPath, XQuery | RDF, SPARQL | Array databases | MapReduce | Big Data | OLAP | Parallel Databases | Wrap-up ]

...plus the talk given by Keith Hare, Convenor of the ISO SQL Working group.

Project

This semester, the project is carried out in collaboration with the MariaDB team so as to get into practically relevant work which, if successful, can become official code contribution.

See the project topics and hints as well as the project intro slides for more information.

Exams

  • sample midterm exam, including solutions

Literature

Course reference:

  • H. Garcia-Molina, J.D. Ullman, J.D. Widom: Database Systems: The Complete Book. 2nd edition, Pearson, 2008 Fundament providing all the basics
  • M. Stonebraker, J.M. Hellerstein, J. Hamilton: Readings in Database Systems, 5th edition, Morgan Kaufmann Publishers, 2018 Interesting facets and views
  • Elvis C. Foster, Shripad V. Godbole: Database Systems. O’Reilly, 2014 Inspection of concrete DBMSs
  • P. Trivett: Python Programming and SQL. ISBN-13: 979-8868124884M.
  • Grinberg: Flask Web Development: Developing Web Applications with Python. O’Reilly, 2018 Two alternatives providing important how-to for the project the Web – manifold tutorials, find your favourite
Further literature: Database journals and conferences

Extra links

For the Unified Modeling Language (UML) there is many good tutorials available on the Web, for example Borland's tutorial, Sparx Systems' tutorial by with a particular part on Database Modeling in UML. There is also a list of UML tutorials maintained by uml.org itself.
Meantime there is also a host of UML tools available - such as Rational Rose and Enterprise Architect (EA) by Sparx Systems, or Omondo's free UML extension to Eclipse - collected in lists like this one.

Some LAMP links: The LAMP page by O'Reilly. LAMP, as you know, stands for..., well, at first: Linux. Compare this and that site! Sometimes helpful: TLPD - The Linux Documentation Project. Then, about the rest: Apache and mySQL and PHP.
Here some food for those who want to practise their German: Linux für alle and LAMP at eFactory.

For PHP, there is some discussion of Apache configuration aspects, also touching security issues. This input sanitizing script might save your life one day.

Tuning of databases is something only marginally addressed in lecture, albeit a large (and fascinating) area, and of immense practical importance. Just two tools here: Practical query analysis produces HTML reports on slowest queries, most frequent queries, queries by type (select/insert/update/delete), and all that sort of thing for PostgreSQL and MySQL database logs. Using a template postgresql.conf and test data, pgAutotune will run through a process of testing different settings on your PostgreSQL server and determine which settings have the best performance. For additional material, see e.g. Software Engineering for Internat Applications.

Given the large variety of Web app implementation languages available it is no surprise that there is hot discussions on which platform is the best one. One line of arguments, which I share to a large extent (but not completely) is presented by two webcasts of a NASA/JPL guy (webcast1, webcast2).

Copyright © 2004+ Peter Baumann -- -- tel. +49-173-583 7882 -- Disclaimer