Attribute is an instance of the attribute type and has a value.
This value is fixed and unique for every given instance of the attribute type.
Attributes can be uniquely addressed by their type and value.
Attribute types represent properties that other types can own.
Instance of data of an entity type, representing a standalone object
that exists in the data model independently.
Entity does not have a value. It is usually addressed by its ownership over attribute instances
and/or roles played in relation instances.
Entity types represent the classification of independent objects in the data model
of the business domain.
Relation is an instance of a relation type and can be uniquely addressed by
a combination of its type, owned attributes and role players.
Relation types (or subtypes of the relation root type) represent relationships between types.
Relation types have roles.
Roles are special internal types used by relations. We can not create an instance
of a role in a database. But we can set an instance of another type (role player)
to play a role in a particular instance of a relation type.