Object hierarchy
Most real-world applications represent data in a hierarchical or relational manner, with the data rationalized into discrete objects. There is often a central "root" object, which parents several other child objects, either as singular objects or as a collection. Each discrete object has its own set of data items that can be any number of types. The key principles we want to cover are as listed:
- A range of data types (
string
,integer
,datetime
) and an enumerated value - Object hierarchy
- Multiple single child entities of the same type
- Collections of entities
Balancing these goals with simplicity, the data diagram we will work toward is as follows:

The purpose of each of these models is described in the following table:
Model | Description |
Client | This is the root of our object hierarchy and represents an individual or party our company has a relationship with, for example, a customer or a patient. |
Contact | A collection of addresses that we can use to contact the client. The possible types... |