Database technology evolved rapidly, driven by the rapid computerization of existing ``manual'' databases during the 1970's. First came the large software systems called Database Management Systems (DBMS's). These system often required weeks of programming in low level language such as COBOL, together with considerable expertise in the language of some particular DBMS just to install a single new transaction type. There systems are still in use.
(Bad) experience with these systems led to the study of databases from a more theoretical standpoint. Most theory was developed in the context of relational databases, which were more abstract than their vendor-dependent predecessors. Valuable concepts, such as that of of the normal form turned out to have genuine practical significance. Eventually implementation of the relational model appeared, and these too are still in use.
A greater level of abstraction was needed, however, to guide the development of databases that could evolve beyond their original purposes without major and expensive reorganization. One of the most successful of the abstract models was the Entity-Relationship Approach. By focusing on the entities the database was to keep track of and their relationships, it could guide the development of relational databases and even lower-level ones.
Prolog is a programming language that contains within it the language of relations. The complete language allows even complex queries to expressed concisely. It thus can be used in a very direct way to implement relational databases. It is still necessary, however, to begin with an abstract model of that part of the world about which one is trying to manage data.
In this paper we will lay out a methodology for designing database. This methodology begins with an entity-relationship model, progresses in a straightforward way to a relational model, and continues on with a translation of the relational model into Prolog. We will begin with a relatively simple example in order to illustrate the technique. We will then describe a quite real database problem facing a significant segment of the molecular biology community: the accumulation and management of data now being collected in thousands of laboratory experiments related to mapping the genome of various organisms. It is widely believed that if this data can be made available in useful form despite the great volume, by allow us unprecedented insight into the evolution and current functioning of basic life processes. The database problem thus posed is currently being attacked with conventional technology. The central examples of this paper is an application of Prolog to this problem.