In the literature, the term data model is used in different ways, sometimes in the context of type (i.e. class) definitions and sometimes in a more fundamental, lower level fashion. It is the latter notion which is used here. A data model is defined as a set of concepts and associated composition rules used to describe types and relationships among instances of these types. In a relational context, the basic data model consists of tables defined through records and attributes, following a number of rules. This is true regardless of the actual content of the tables and records. In an object oriented context the equivalent situation holds, but in this case we are dealing with abstract concepts of classes, objects, and the like and the associated rules are somewhat different. Note that the definition of a data model includes a series of composition rules. An integral part of the relational model holds that a record may have any number of attributes, but each attribute must be defined in terms of a primitive type (e.g., integers, reals, etc.). With an object oriented model this rule does not apply, but there are a number of other rules concerning inheritance, polymorphism, attribute domains and aggregation.
In Figure 2-1 the data model and its associated modelling techniques are without reference to any specific class of objects or discipline. As discussed in Chapter 1, the definition of a class usually pertains to a given field of expertise, to a project, or to the data holdings of a given organization. A number of these definitions are contained within a schema. A schema about topography might contain the class definitions of road, stream, coastline, elevation Point, etc. The definition of a new class may make use of other class definitions, so long as the data modelling rules are followed. The SAIF data model follows a multiple inheritance, object oriented design. This chapter provides definitions for the basic components of the data model and discusses the general approach to modelling provided by SAIF.