Skip to main content

Contact Management Data Model

Much of the tutorial focuses on building a web-based contact management application. When complete, this application will allow you to store information about your contacts, their addresses, and phone numbers. You will be able to search, edit, add, and delete contacts through a web interface.

From an object-oriented perspective, the model will consist of three classes:

  • Contact

  • Address

  • PhoneNumber

The three classes will be related. Each Contact will contain a single Address as well as several PhoneNumbers.

The following diagram shows this relationship:

generated description: datamodel 20112

From a relational perspective, both Contact and PhoneNumber will be represented by separate tables. Address, however, will correspond to a set of columns within the Contact table.

Here is the relational schema:

generated description: datamodel relational 20112

Notice that each table has an ID column. This column represents the unique row id (object id) for each row (object). Notice also that the PhoneNumber table contains a Contact column. This column contains the ID of the parent Contact row (object).

We will develop in an object-oriented fashion. We will build the class from the object model. Caché will automatically project these class definitions to their relational representations.


Contact and PhoneNumber are Persistent classes while Address is a Serial class. For more information on persistent and serial classes as well as other types of Caché classes, read Kinds of Classes in the Defining and Compiling Classes section of Using Caché Objects.

FeedbackOpens in a new tab