Are Databases a Special Case of Programming Languages?
T. H. Merrett
School of Computer Science
McGill University
Abstract
Databases deal primarily with data on secondary storage, which differs from
the data types of conventional programming languages by being persistent,
shared, and often too large for RAM. Database languages have mainly been
query languages. Some programming languages have been made persistent, usually
giving rise to object-oriented databases. The relational model has been used
as a basis for logic programming. How far can the unification of databases
and programming languages be taken, especially in view of the need for data
units which may exceed RAM capacity?
We present some results of exploring this question. It leads to further
questions which we can answer.
- What kinds of programming can be done in a language whose data
structures support possibly very large sets of related items, and
whose operations abstract over loops?
- What happens to functions in a programming language when seen from
the perspective of relations, since relations generalize functions
mathematically?
- What happens to database relations when asked to support data abstraction
and how can this be done with no new syntax in the database formalism?
- Object orientation was motivated by a wish to instantiate possibly
very large numbers of similar objects (such as cells or gas molecules);
relations can represent very large numbers of similar objects: how can
instantiation be incorporated into the relational algebra?
Related topics, which we shall not have time to address, include relational
recursion, event programming for active databases, process synchronization
in an associative data language, and scoping and multidatabases.
You can get more information
on the Web or,
in a better version,
as Postscript file.