Las 12 reglas de Codd
El Dr. Edgar F. Codd, después de su extensa investigación sobre el modelo relacional de los sistemas de bases de datos, ideó doce reglas propias, que según él, una base de datos debe obedecer para ser considerada como una verdadera base de datos relacional.
Estas reglas se pueden aplicar en cualquier sistema de base de datos que administre datos almacenados utilizando solo sus capacidades relacionales. Esta es una regla fundamental, que actúa como base para todas las demás reglas.
Regla 1: Regla de información
Los datos almacenados en una base de datos, ya sean datos de usuario o metadatos, deben ser un valor de alguna celda de la tabla. Todo en una base de datos debe almacenarse en formato de tabla.
Regla 2: Regla de acceso garantizado
Se garantiza que cada elemento de datos (valor) sea accesible lógicamente con una combinación de nombre de tabla, clave principal (valor de fila) y nombre de atributo (valor de columna). No se pueden utilizar otros medios, como los punteros, para acceder a los datos.
Regla 3: Tratamiento sistemático de valores NULL
Los valores NULL en una base de datos deben recibir un tratamiento sistemático y uniforme. Esta es una regla muy importante porque un NULL se puede interpretar como uno de los siguientes: faltan datos, no se conocen datos o no son aplicables.
Regla 4: Catálogo en línea activo
La descripción de la estructura de toda la base de datos debe almacenarse en un catálogo en línea, conocido como data dictionary, al que pueden acceder los usuarios autorizados. Los usuarios pueden utilizar el mismo lenguaje de consulta para acceder al catálogo que utilizan para acceder a la propia base de datos.
Regla 5: Regla de sub-idioma de datos completos
Solo se puede acceder a una base de datos utilizando un lenguaje que tenga una sintaxis lineal que admita la definición de datos, la manipulación de datos y las operaciones de gestión de transacciones. Este lenguaje se puede utilizar directamente o mediante alguna aplicación. Si la base de datos permite el acceso a los datos sin la ayuda de este idioma, se considera una infracción.
Regla 6: Ver regla de actualización
Todas las vistas de una base de datos, que en teoría se pueden actualizar, también deben ser actualizables por el sistema.
Regla 7: Regla de alto nivel para insertar, actualizar y eliminar
Una base de datos debe admitir la inserción, actualización y eliminación de alto nivel. Esto no debe limitarse a una sola fila, es decir, también debe admitir operaciones de unión, intersección y menos para producir conjuntos de registros de datos.
Regla 8: Independencia de los datos físicos
Los datos almacenados en una base de datos deben ser independientes de las aplicaciones que acceden a la base de datos. Cualquier cambio en la estructura física de una base de datos no debe tener ningún impacto en cómo las aplicaciones externas acceden a los datos.
Regla 9: Independencia lógica de los datos
Los datos lógicos en una base de datos deben ser independientes de la vista de su usuario (aplicación). Cualquier cambio en los datos lógicos no debe afectar a las aplicaciones que los utilizan. Por ejemplo, si se combinan dos tablas o una se divide en dos tablas diferentes, no debería haber ningún impacto o cambio en la aplicación del usuario. Esta es una de las reglas más difíciles de aplicar.
Regla 10: Integridad Independencia
Una base de datos debe ser independiente de la aplicación que la utiliza. Todas sus restricciones de integridad se pueden modificar de forma independiente sin necesidad de ningún cambio en la aplicación. Esta regla hace que una base de datos sea independiente de la aplicación front-end y su interfaz.
Regla 11: Independencia de distribución
El usuario final no debe poder ver que los datos están distribuidos en varias ubicaciones. Los usuarios siempre deben tener la impresión de que los datos se encuentran en un solo sitio. Esta regla se ha considerado la base de los sistemas de bases de datos distribuidos.
Regla 12: Regla de no subversión
Si un sistema tiene una interfaz que proporciona acceso a registros de bajo nivel, entonces la interfaz no debe poder subvertir el sistema y evitar las restricciones de seguridad e integridad.