Class and Attribute Subsystem

Click the class diagram image to open it in a separate browser tab. If you have a large display, you can move it to the side and inspect the classes by clicking the description buttons below.  If you are using your tiny little phone or just want a printable diagram, click or context-click the button to view or download a PDF.

Class Model Descriptions

Some rules modeled

Here is a summary of some of the rules captured in this subsystem.

A class must have at least one identifier
How? R21, 1..* multiplicity

An identifier consists of at least one attribute
How? R22, 1..* multiplicity

An attribute may or may not participate in an identifier
How? R22 0..* multiplicity

An attribute may participate in an identifier only if that identifier is defined on the same class as the attribute
How? Note how the referential attributes are formalized in the Identifier Attribute class. This class refers to the identifier of Identifier (Number + Class + Domain) where Number has been renamed as “Identifier” and the identifier of Attribute (Name + Class + Domain) where Name has been renamed as “Attribute”. Since both the Attribute and the Identifier must belong to the same class, the (Class + Domain) attributes have been merged together. In other words, a single pair of values (Class, Domain) simultaneously refers to both an Attribute and Identifier instance. For example, we would say that the attribute “Name” in class “Airport” of domain “Air Traffic Control” participates in identifier “1” of class “Airport” in domain “Air Traffic Control”. But we constrain the values of class and domain to be the same for both. So we condense our statement to just say “Name” participates in identifier “1” for class “Airport” of domain “Air Traffic Control”.

An Identifier is either defined by the modeler or it is automatically constructed (and required) based on relationship formalization rules
How? R30 generalization In other words, some identifiers are defined by the modeler and others are automatically constructed. Identifiers like Student.ID on the class Student or Course Number on the class Course are defined by the modeler. So these are “Modeled Identifiers”. But consider the association class Enrollment that formalizes the many-many relationship of students enrolling in courses. The referential attributes Student -> Student.ID and Course -> Course.Number in the Enrollment class must, taken together, constitute an identifier of Enrollment. That is a “Required Referential Identifier” because the modeler doesn’t get a choice.

An attribute is either constrained to hold values referring to those of some identifier attribute or it does not
How? R21 Generalization
In other words, every attribute is either a Referential Attribute or it is not.