Table Action - modelint/shlaer-mellor-metamodel GitHub Wiki

Shlaer-Mellor models are built on a relational and hence a mathematical foundation.

The data structure that describes a Class, for example, is an empty table. This constitutes an application of relational theory where a relation is defined as having a head and a body. The head of a relation consists of a set of typed attributes while the body consists of a set of tuples. This corresponds roughly to the Attributes in a Class and any instances that populate the class. We say roughly because a Class requires at least one Attribute while a relation may have zero Attributes defined.

In this metamodel we refer to the head of a relation as a Table. A Table Flow describes a Table head along with its body consisting of zero or more tuples (rows).

A Relational Action makes it possible to operate on a subset of a Class's Attributes and a subset of a Class's instances. Especially when combined, Relational Actions can perform powerful operations on data in a Class model. Since relational theory is a branch of mathematics, we can make use of them without biasing ourselves toward any particular computational platform.

In fact, all operations on data in a Shlaer-Mellor model are inherently relational. The non-relational Actions provide an object-oriented view to data manipulation that is often sufficient. For example, we can use the Select Action in combination with an Identifier value to obtain an instance where we would like to direct an signal with the Signal Action. Behind the scenes, the Select Action applies a relational RESTRICT operation by means of a Class Restriction Condition. But the user need not deal with the relational mechanics.

There are many times, however, when the simplest way to perform a computation involves the direct application of relational operations and Table Flows. Relation Actions make it possible to perform such computations while avoding unnecessarily awkward or complicated object-oriented actions.

Reference RTCP is highly recommended for anyone who would like to better understand the available Relational Actions and how to use them effectively.

Identifiers

  1. ID + Activity + Domain

Attributes

No non-referential attributes