La sexta forma normal ( 6NF ) es una forma normal utilizada en la normalización de bases de datos relacionales que extiende el álgebra relacional y generaliza los operadores relacionales (como join ) para admitir datos de intervalo, lo que puede ser útil en bases de datos temporales .
El término 6NF también se ha utilizado históricamente para referirse a otro grado de normalización, que hoy en día se conoce más comúnmente como forma normal de clave de dominio (DKNF) (ver Otros significados).
Christopher J. Date y otros han definido la sexta forma normal como una forma normal , basada en una extensión del álgebra relacional. [1] [2] [3]
Los operadores relacionales, como join , se generalizan para admitir un tratamiento natural de datos de intervalo, como secuencias de fechas o momentos en el tiempo, por ejemplo en bases de datos temporales . [4] [2] [3] La sexta forma normal se basa entonces en esta unión generalizada, de la siguiente manera:
Una relvar R [tabla] está en sexta forma normal (abreviada 6NF) si y solo si no satisface ninguna dependencia de unión no trivial, donde, como antes, una dependencia de unión es trivial si y solo si al menos una de las proyecciones (posiblemente U_projections) involucradas se toma sobre el conjunto de todos los atributos de la relvar [tabla] en cuestión. [5]
Date et al. también han dado la siguiente definición:
Relvar R está en sexta forma normal (6NF) si y solo si cada JD [Join Dependency] de R es trivial —donde un JD es trivial si y solo si uno de sus componentes es igual al encabezado pertinente en su totalidad. [6]
Cualquier relación en 6NF también está en 5NF .
La sexta forma normal tiene como objetivo descomponer las variables de relación en componentes irreducibles . Aunque esto puede ser relativamente poco importante para las variables de relación no temporales, puede ser importante cuando se trabaja con variables temporales u otros datos de intervalo. Por ejemplo, si una relación comprende el nombre, el estado y la ciudad de un proveedor, es posible que también queramos agregar datos temporales, como el tiempo durante el cual estos valores son o fueron válidos (por ejemplo, para datos históricos), pero los tres valores pueden variar independientemente uno del otro y a diferentes velocidades. Por ejemplo, es posible que deseemos rastrear el historial de cambios en el estado; una revisión de los costos de producción puede revelar que un cambio fue causado por un cambio de ciudad de un proveedor y, por lo tanto, lo que cobraron por la entrega.
Para más información sobre la agregación temporal en SQL, consulte también Zimanyi. [7] Para un enfoque diferente, consulte TSQL2 . [8]
La sexta forma normal se utiliza actualmente (a partir de 2009) en algunos almacenes de datos en los que los beneficios superan a los inconvenientes, [9] por ejemplo, mediante el uso de modelos de anclaje . Aunque el uso de 6NF conduce a una explosión de tablas, las bases de datos modernas pueden podar las tablas de las consultas de selección (utilizando un proceso llamado "eliminación de tablas", de modo que una consulta se puede resolver sin siquiera leer algunas de las tablas a las que hace referencia la consulta [10] ) donde no son necesarias y, por lo tanto, acelerar las consultas que solo acceden a varios atributos.
Para que una tabla esté en sexta forma normal, primero debe estar en quinta forma normal y luego se requiere que cada tabla satisfaga solo dependencias de unión triviales. Tomemos un ejemplo simple [11] con una tabla que ya está en 5NF: Aquí, en la tabla de usuarios, todos los atributos no son nulos y la clave principal es el nombre de usuario:
Esta tabla está en 5NF porque cada dependencia de unión está implícita en la clave candidata única de la tabla (nombre de usuario). Más específicamente, las únicas dependencias de unión posibles son: {nombre de usuario, estado}, {nombre de usuario, departamento}.
La versión 6NF se vería así:
Entonces, de una tabla en 5NF, 6NF produce dos tablas.
A continuación se muestra otro ejemplo:
Las dependencias de unión de la tabla son {nombre del médico, ocupación}, {nombre del médico, práctica en años} y {nombre del médico, tipo}. Por lo tanto, podemos ver que dicha tabla es 2NF (debido a la aparición de dependencia transitiva). Las siguientes tablas intentan convertirla en 6NF:
La sexta forma normal (6NF) se utiliza a veces como sinónimo de la forma normal de dominio clave (DKNF). Este uso es anterior al trabajo de Date et al. [12]