A Referential Attribute may simultaneously participate in more than one Reference. In the example below, the Referential Attribute Paragraph.Document simultaneously refers to the document in which it is contained, R1, and the document that contains the next paragraph, R2. This prevents the illegal specification of a paragraph that precedes one in a separate document.
Each such usage of a Referential Attribute constitutes a Referential Role.
Referential Attribute.Name — The name of the referring Referential Attribute.
Referential Attribute.Class and Reference.From class — The Referential Attribute is defined in this Class which is also the source of the Reference.
To attribute — constrained
Identifier Attribute.Attribute — This is the name of the Identifier Attribute referred to by the Referential Attribute. The value pair (From attribute, From class) may not match the (To attribute, To class) value pair. In other words, a Referential Attribute may never refer to itself! This is a simple case of an illegal cycle where a Non-Referential Attribute, and hence Type, is never found. It’s bad mojo.
To class — constrained
Identifier Attribute.Class and Reference.To class — The referenced Identifier Attribute’s Class is the Reference’s To class. The constraint is described under To attribute, above.
To identifier — constrained
Identifier Attribute.Identifier — This is the number of the referenced Identifier Attribute. Same constraint on attribute and class applies here (all part of the same reference).
Reference.Rnum — The Relationship partially or fully formalized by this Referential Role.
Referential Attribute.Domain and Identifier Attribute.Domain and Reference.Domain — The Domain of the aforementioned Relationship, Classes and Attributes.
- From attribute + From class + Reference Type + To class + Rnum + Domain
Standard composition of a Mx:Mx association class identifier. Constructed by taking the Reference identifier (Type + From class + To class + Rnum + Domain) and the Referential Attribute identifier (Name + Class + Domain) with attributes merged as follows:
Reference.Domain + Referential Attribute.Domain = Referential Role.Domain
Reference.From class + Referential Attribute.Class = Referential Role.From class
Reference consists of one or many Referential Attribute
Referential Attribute is part of one or many Reference
Each Reference must point to a complete Identifier. For each component of the target Identifier, there must be a corresponding Referential Attribute in the Reference. Since an Identifier is made up of one or more Attributes, a Reference must also consist of at least one Referential Attribute.
A Referential Attribute may play a role in more than one Relationship. Each such role will apply to a distinct Reference.
Referential Role references exactly one Identifier Attribute
Identifier Attribute is referenced by zero, one or many Referential Role
By definition, a Referential Role represents the direction of reference from a Referential Attribute to a specific Identifier Attribute. A complete Reference binds one or more Referential Attributes to a complete Identifier with all of its component Identifier Attributes.
A Class may or may not serve as a reference target even though it may participate in one or more Relationships. If a Class does not participate in any Relationships, then none of its Identifier Attributes will be referenced. If a Class participates in some Relationships, but only as the source of a Reference in each of these Relationships, then again, none of the Class’s Identifier Attributes will be referenced.
Referential loops are forbidden, so an Identifier Attribute that also happens to be a Referential Attribute may not refer to itself.