# Sixth normal form

Sixth normal form (6NF) is a term in relational database theory, used in two different ways.

## 6NF (C. Date's definition)

A book by Christopher J. Date and others on temporal databases,[1] defined sixth normal form as a normal form for databases based on an extension of the relational algebra.

In this work, the relational operators, such as join, are generalized to support a natural treatment of interval data, such as sequences of dates or moments in time.[2] Sixth normal form is then based on this generalized join, as follows:

A relvar R [table] is in sixth normal form (abbreviated 6NF) if and only if it satisfies no nontrivial join dependencies at all — where, as before, a join dependency is trivial if and only if at least one of the projections (possibly U_projections) involved is taken over the set of all attributes of the relvar [table] concerned.[Date et al.][3]

Any relation in 6NF is also in 5NF.

Sixth normal form is intended to decompose relation variables to irreducible components. Though this may be relatively unimportant for non-temporal relation variables, it can be important when dealing with temporal variables or other interval data. For instance, if a relation comprises a supplier's name, status, and city, we may also want to add temporal data, such as the time during which these values are, or were, valid (e.g., for historical data) but the three values may vary independently of each other and at different rates. We may, for instance, wish to trace the history of changes to Status.

For further discussion on Temporal Aggregation in SQL, see also Zimanyi.[4] For a different approach, see TSQL2.[5]

## DKNF

Some authors use the term sixth normal form differently, namely, as a synonym for Domain/key normal form (DKNF). This usage predates Date et al.'s work.[6]

## Usage

The sixth normal form is currently being used in some data warehouses where the benefits outweigh the drawbacks,[7] for example using Anchor Modeling. Although using 6NF leads to an explosion of tables, modern databases can prune the tables from select queries (using a process called 'table elimination') where they are not required and thus speed up queries that only access several attributes.

## References

1. ^ Date et al., 2003
2. ^ op. cit., chapter 9: Generalizing the relational operators
3. ^ op. cit., section 10.4, p. 176
4. ^ Zimanyi 2005
5. ^ Snodgrass, Richard T. TSQL2 Temporal Query Language. Describes history, gives references to standard and original book.
6. ^ See www.dbdebunk.com for a discussion on this topic
7. ^ See the Anchor Modeling website for a website that describes a data warehouse modelling method based on the sixth normal form