An Attribute that is not constrained to hold the value of some Identifier Attribute is non-referential. In other words, an attribute whose value does not systematically refer to some other value in the model is non-referential. A Non-Referential Attribute is an intrinsic property of the local Class without regard to any other attributes. On a class diagram, a Non-Referential Attribute is shown with a the name of some Type (data) without an associated R tag.
Type - constrained
Type.Name — This Attribute’s data Type. This can be any System Type or a Domain Type defined in this Attribute’s Domain.
- Name + Class + Domain
Same as the superclass.
Non-Referential Attribute may assume values defined by exactly one Type
Type defines range of values assignable to zero, one or many Non-Referential Attribute
Every value is defined by some Type (data type) (C.J.Date). The range of values that may be assigned to any instance of a Attribute are defined by a single Type. There is no such thing as a type-less value, and every Attribute can take on values, so every Attribute requires a Type.
A Type is defined directly only for each Non-Referential Attribute. The Type of a Referential Attribute is then determined by following a chain of one or more Referential Attributes ultimately leading to a Non-Referential Attribute.
A Type may be defined that is not currently used by any Non-Referential Attribute. This makes it possible to predefine a library of Types for later use. A Type that does not constrain any Non-Referential Attribute, however, will have no relevance in a populated metamodel. (A code generator would, therefore, safely disregard any such unused Types).
Non-Referential Attribute is an Independent or a Derived Attribute
The value of a Non-Referential Attribute is either independent or computed based the values of one or more other Attributes in the same Domain (Derived). Referential Attributes, by contrast, are never derived. This makes sense, since a Referential Attribute always refers to one or more other Attributes.