The following syllabus is designed for a two semester sequence.
The first semester covers database design and modeling concepts,
while the second semester concentrates on implementation techniques.
The project could involve the design of a schema for a realistic application, and the implementation of the entire application using SQL and other development tools such as Java servlets or JSP/ASP/ColdFusion/etc. See Chapter 8 for some sample projects.
We recommend projects based on adding functionality to the PostgreSQL open-source database system. Examples of such projects include: adding SQL features that are currently not supported by PostgreSQL, implementing execution algorithms for specialized tasks such as finding top-K results, joins with external data sources, and so on. Chapter 26 provides an overview of PostgreSQL that students should read before studying the PostgreSQL code.
Another kind of project would require students to construct a relation
manager on top of a storage manager such as Exodus. The
relation manager should support relation scans with and without
primitive predicates (= value, < value, > value).
The students could then implement some relational algebra
operations, such as joins,
top of the relation manager. We recommend the interfaces,
such as the relation manager interface, be defined by the
instructor.
Implementing a concurrency control manager may be an alternative
to or a supplement to implementing relational algebra operations.
A more extensive project would be along the lines of the
project used in the undergraduate database course in Wisconsin,
where students implement not only the layers described above,
but also implement a primitive file systems (page files),
a primitive collection manager (heap files), and a buffer
manager. Thereby students get a feel for all levels of
a database system implementation.
As before, all interfaces are defined by the instructor.
The software system used in the Wisconsin projects is
called
Minibase.
Last updated April 2005.