The notion of dividing complex problems into hierarchic levels of abstraction has a long history. Recently this approach under the name, structured programming, has been used in a pragmatic way to simplify the structure of procedural programs. The notion has also been used in the data base area - notable early papers include those of Madnick (1) and Meltzer (2). In these early papers, level structures (for example, involving logical and physical levels) were also relatively pragmatic creations. One new aspect of the DIAM I architecture (3) was that it defined a detailed, relatively formal basis for four levels of abstraction and the mappings between these levels. Each level had a small set of primitive generalized building blocks, each with its own small permanent set of parameters. By specifying values for these parameters, the user could define essentially any reasonable data structure and file organization he wished for his stored information. © 1976, ACM. All rights reserved.