%key special fields are
used to avoid several instances of the
same field in a record, and to implement keys in record sets.
Their usage is:
%unique: field1 field2 ... fieldN %key: field
The field names are separated by one or more blank characters.
Normally it is permitted for a record to contain two or more fields of
the same name.
%unique special field revokes this permissiveness.
A field declared “unique” cannot appear more than once in a single record.
For example, an entry in an address book database could contain an
Age field. It does not make sense for a single person to be of
several ages. So, a field could be declared as “unique” in the
corresponding record descriptor as follows:
%rec: Contact %mandatory: Name %unique: Age
%unique fields can appear in the same record
descriptor. The set of unique fields is the union of all the entries.
%key makes the referenced field the primary key of the record
The primary key behaves as if both
%mandatory had been specified for that field.
Additionally, there is further restriction, viz:
a given value of a primary key field may appear no more than once within a
Consider for example a database of items in stock. Each item is
identified by a numerical
Id field. No item may have more than
Id, and no items may exist without an associated
Id. Additionally, no two items may share the same
This common situation can be implementing by declaring
the key in the record descriptor:
%rec: Item %key: Id %mandatory: Title Id: 1 Title: Box Id: 2 Title: Sticker big
It would not make sense to have several primary keys in a record set.
Thus, it is not allowed to have several
%key fields in the
same record descriptor.
It is also forbidden for two items to share the same `Id' value.
Both of these situations would be data integrity
violations, and will be reported by a checking tool.
Elsewhere, we discuss how primary keys can be used to link one record set to another using primary keys together with foreign keys. See Queries which Join Records.