Temporal Database System

Level

Undergraduate, MSc

Objective

This project would involve building a database system which would provide improved support for the storage and querying of temporal data than is found in current relational databases. The database temporal query language would be based on US Logic, which provides a simple extension of the relational calculus to support temporal data.

Description

Since computer based information systems have been in use for several decades, many organisations have now built up computerised archives of their activities in the past. These archives are often valuable, in that the past patterns of behaviour can be used to predict future behaviour of either individuals or organisations. Temporal databases (also known as historical databases) provide support for the efficient storage and querying of such information.

Standard relational databases are week in their support for querying temporal information. For example, given the table:
staff
namedeptstartend
petercomputing19992003
igorcomputing19801989
igoreee19902003
the query project (staff.name,staff.start,staff.end) would result in
staff
namestartend
peter19992003
igor19801989
igor19902003
yet semantically the answer should merge the two rows containing igor to give a single interval from 1980 to 2003.

This advanced project involves the design and implementation of a Temporal Database system to support the storage of temporal data, and querying of temporal data using an extension of the relational algebra US logic (as studied in the Advanced Databases Course), using known techniques ([McBrien (1993)]) for the implementation of the basic US operations. Project work would include designing the implementation of extended temporal operators, and the design and implementation of new temporal operators.

Possible extensions of the project include:

Suggested methods for implementation of the project would be either

  1. Use Java and the JDBC API to produce a wrapper around existing relational databases, where the Java programme parses temporal DDL and DML statements, and converts them (as far as is possible) to SQL statements to run on the relational database, and implement in Java functions that cannot be translated into SQL.
  2. Implement core temporal operators in the RDBMS (using triggers where transitive closure is required of intervals), and write a wrapper that translates temporal SQL into SQL that uses the core temporal operators.
  3. Modify and extend the Postgres source code to support temporal DDL and DML statements. In this case, it is expected that a temporal SQL language will be developed within the project, and no temporal RA be implemented.

References

For other projects, see Peter McBrien's teaching page