Those special field names are used to restrict the fields that can appear in the records stored in a database. Their usage is:
%mandatory: field1 field2 ... fieldN %prohibit: field1 field2 ... fieldN
In both cases the list of field names are separated by one or more blank characters.
The fields listed in some %mandatory
entry will be considered
mandatory; i.e., at least one field with this name shall be present
in any record of this kind. Records violating this restriction will
be considered invalid and a checking tool will report the situation as
a data integrity failure.
Consider for example an “addressbook” database where each record
stores the information associated with a contact. The records will be
heterogeneous, in the sense they won't feature exactly the same
fields: the contact of an internet shop will probably have an
Url
field, while the entry for our grandmother probably wont.
We still want to make sure that every entry has at a field: the name
of the contact. In that case we could use %mandatory
as
follows:
%rec: Contact %mandatory: Name Name: Granny Phone: +12 23456677 Name: Yoyodyne Corp. Email: sales@yoyod.com Phone: +98 43434433
Similarly, the fields listed in some %prohibit
entry will be
considered forbidden; i.e., no field with this name shall be present
in any record of this kind. Again, records violating this restriction
will be considered invalid.
This can be useful when some field name is reserved for some future
use. For example, if we want to make sure no Telex
will be
even used in our contacts database, we would change the record
descriptor as follows:
%rec: Contact %mandatory: Name %prohibit: Telex
Several %mandatory
and/or %prohibit
fields can appear in
the same record descriptor. The set of mandatory or prohibited fields
is the union of all the entries. For example, in the following
database both Id
and id
are prohibited:
%rec: Entry %prohibit: Id %prohibit: id