The Third Manifesto Paraphrase – 5

Very Strong Suggestions

These are features that an implementation should provide or at least consider providing, but fall short of being mandatory requirements.

Relational Model Very Strong Suggestions

These are recommended features that arise from the Relational Model.

RM VSS 1 – Built-in key value generator

An implementation should provide a built-in mechanism by which the values of certain attributes may be generated, and which are guaranteed to be unique (within limits). The intended purpose is to generate unique key values.

RM VSS 2 – Inferred candidate keys

Where possible an implementation should infer the candidate keys for a relvar from its definition. In particular it should do so for a virtual relvar based on an analysis of its defining expression and any base or other relvars it references.

RM VSS 3 – Transition constraints

A transition constraint is one that serves to define the permitted transitions that a database can make from one value to another.

An implementation should support transition constraints, and may associate them with specific update operators.

RM VSS 4 – Quota queries

A quota query is one that specifies a limit on the cardinality of the relational value that is the result of an expression.

An implementation should support quota queries, which may either be absolute or relative to the rank of some attribute value. In the latter case the actual result may contain more or less tuples than the specified limit.

RM VSS 5 – Generalised transitive closure

A transitive closure is a relational operation that takes as an argument a relation that represents a directed graph as individual arcs and returns one that lists all paths through the graph.

A generalised transitive closure is one that can perform calculations such as concatenation and aggregation along those paths.

An implementation should provide means to define generalised transitive closure operators.

RM VSS 6 – Generic operators

A generic operator is one that has arguments and results that are drawn from a specified set of types and are not just individual declared types. All built-in operators of the relational calculus are generic, in that they apply to all relational types.

An implementation should provide means for defining generic operators, particularly for relational types.

RM VSS 7 – Implementation of SQL

An implementation should be such that it may be used to implement a dialect of SQL (as a transition aid), or that existing SQL programs and databases may be converted to it (for migration).

Other Orthogonal Very Strong Suggestions

These are recommended features that arise outside the Relational Model.

OO VSS 1 – Type inheritance

An implementation should support type inheritance as described by the Inheritance Model.

OO VSS 2 – Operator and types unbundled

Bundling means the common object-oriented practice of defining operators inside a particular class, and thereby having a privileged receiver or self or this object for the operator.

An implementation should avoid bundling and instead provide operators that are separate from the types they act on, and that have no privileged receiver.

OO VSS 3 – Single level store

Single level store means the principle that database and application variables be interchangeable and indistinguishable for most programming purposes.

An implementation should support single level storage to the maximum extent possible.

Note: the consequences in a concurrent environment and means to address them are not specified.