R1150 - modelint/shlaer-mellor-metamodel GitHub Wiki

R1150 / Generalization

Relational Action is a Restrict Action, Project Action, Rename Action, Extend Action, or Set Action


Relational theory defines a handful of operations that can be applied to relations which we refer to as Tables in our metamodel. Specifically, we take those operations defined by RTCP. So far we have all of them except the image action which will eventually be included.

All such Actions yield a Table Flow as output. The fact that the output is always a Table establishes the mathematical principle of closure which means that we can nest Relational Actions.

That said, the Restrict, Project, Rename and Extend Actions require specifications in addition to an input Table Flow. These specifications are expressed with the necessary classes and relationshps. All other operations simply take in one or two Non Scalar (table or class) Flows and then output a single Table Flow. Consequently, they can be lumped into the Set Action with an appropriate Set op of JOIN, ADD, SUBTRACT, or INTERSECT.