# Bases de datos relacionales

El modelo relacional nació como consecuencia de los trabajos publicados por Codd en 1970, y su duración en el tiempo es debido en gran medida a que es un modelo bien fundado en bases matemáticas que puede representarse fácilmente usando algoritmos computacionales.

Los **objetivos** fundamentales que buscaba el trabajo de Codd se pueden resumir en:

- **Independencia física**: el modo de almacenamiento de los datos no influye en su manipulación lógica.
- **Independencia lógica**: el añadir, eliminar o modificar objetos de la BD no repercute en el acceso a subconjuntos de los mismos.
- **Flexibilidad**: se puede presentar a cada usuario los datos de una forma distinta.
- **Uniformidad**: las estructuras lógicas de los datos presentan un aspecto uniforme.
- **Sencillez**: es fácil de utilizar y comprender para el usuario final.

En 1985 Codd publicó sus 12 reglas analizando algunos productos comerciales. Éstas son:

1. **Regla de información**: la información está representada explícitamente a nivel lógico y exactamente de un modo, mediante valores en tablas.
2. **Regla de acceso garantizado**: cada uno de los datos se garantiza que sea lógicamente accesible mediante una combinación de nombre de tabla, valor de clave primaria y nombre de columna.
3. **Tratamiento sistemático de valores nulos**: los valores nulos se soportan en los SGBD completamente relacionales para representar la falta de información.
4. **Catálogo en línea** dinámico basado en el modelo relacional: la descripción de la base de datos se representa a nivel lógico del mismo modo que los datos ordinarios.
5. **Regla de sublenguaje completo de datos**: Existen varios tipos de lenguaje. El modelo relacional debe soportar por lo menos un lenguaje relacional que: 
    - Tenga una sintaxis lineal.
    - Puede ser utilizado dentro de programas de uso.
    - Soporte operaciones de definición de datos, de manipulación de datos, seguridad e integridad y operaciones de administración de transacciones.
6. **Regla de actualización de vista**: toda vista teóricamente actualizable es también actualizable por el sistema.
7. **Inserción, actualización y supresión de alto nivel**: los datos se pueden recuperar de una base de datos relacional en los sistemas construidos de datos de filas múltiples y/o de tablas múltiples
8. **Independencia física de los datos**.
9. **Independencia lógica de los datos**.
10. **Independencia de integridad**: las limitaciones de la integridad se deben especificar por separado de los programas de la aplicación y se almacenan en la base de datos.
11. **Independencia de distribución:** la distribución de las porciones de la base de datos a las varias localizaciones debe ser invisible a los usuarios de la base de datos.
12. **Regla de no subversión**: si el sistema proporciona una interfaz de bajo nivel de registro, a parte de una interfaz relacional, esa interfaz de bajo nivel no se puede utilizar para subvertir el sistema

{{@5685}}