The project could involve the design of a schema for a realistic
application, and the implementation of the
entire application
using SQL and other languages and APIS such as Java servlets/JSP
C#/ASP, PHP, etc.
See Chapter 9 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 27 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 Berkeley DB.
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 Feb 2019.