Skip to content
Leon Starr edited this page Sep 5, 2023 · 7 revisions

R809 / Generalization

Relation Flow is a Tuple Flow or Table Flow


A relation can be visualized as a table structure composed of a header and a body. The header is a set of attribute type pairs and the body is a set of tuples. A tuple supplies a value for each attribute in the header.

Note the use of the term 'set' which can always be empty.

In our metamodel we refer to the header as a Table and a combined header and body as a Relation Flow. The attributes are referred to as Table Attributes and the type of each Table Attribute is a Scalar.

If the body consists of exactly one tuple, we say the relation has a cardinality of one and is conveyed as a Tuple Flow. Otherwise it is a Table Flow.

We make the distinction because certain relational operations require a Tuple Flow as input. The Extract Action, for example, outputs a Scalar corresponding to some selected Table Attribute. If a Relation Flow having zero or multiple tuples were input to this Action, it would fail to yield the required single Scalar value.

That said, we can flow a Tuple Flow anywhere that accepts a Relation Flow, but we cannot provide a Table Flow where a Tuple Flow is required.

Clone this wiki locally