Thou shalt be extensible
The database system comes with a set of predefined types. These types
can be used at
will by programmers to write their applications. This set of type must
be extensible in the following sense: there is a means to define new
types and there is no distinction in usage between system defined
and user defined types. Of course, there might be a strong difference
in the
way system and user defined types are supported by the system,
but this should be invisible to the application and to the application
programmer. Recall that this type definition includes the definition
of operations on the types. Note that the encapsulation requirement
implies that there
will be a mechanism for defining new types. This requirement
strengthens that capability by saying that newly created types must have
the same status as existing ones.
However, we do not require that the collection of type constructors (tuples, sets, lists, etc.) be extensible.