Atomic types and user-defined types can be combined to describe more complex structures using type constructors.Common type constructors include:
To fully appreciate the power of type constructors, observe that they can be composed; for example, ARRAY(ROW(age: integer, sal: integer)). Types defined using type constructors are called structured types. Those using listof, ARRAY, bagof,or setof as the outermost type constructor are sometimes referred to as collection types,or bulk data types.
The introduction of structured types changes a fundamental characteristic of relational databases, which is that all fields contain atomic values. A relation that contains a structured type object is not in first normal form.