Desarrollo de Contenido 3. Bases de datos Historia de las bases de datos1 Los sistemas de bases de datos hicieron su aparición durante la década de los 60´s. Entre lo más relevante tenemos lo siguiente: North American Aviation (NAA), desarrolló GUAM (General Update Access Method), que era un software que contaba con una estructura jerárquica (forma de árbol) IBM se fusiona con NAA para desarrollar lo que más tarde se conocería como IMS (Information Management System) para el manejo de jerarquías de registros y así permitir el uso de dispositivos de almacenamiento secuencial en las cintas magnéticas. General Electric crea IDS (Integrated Data Store), el cual era un sistema de bases de red, desarrollado por dos razones: o para satisfacer la necesidad de representar complejas relaciones entre datos. o para imponer un estándar de bases de datos2. En 1970 Codd3, de los laboratorios de investigación de IBM, escribió un artículo presentando el modelo relacional. Se desarrollan los sistemas relacionales, y a principios de los ochenta surge System R, de IBM, que se perfeccionó para probar la funcionalidad del modelo relacional, proporcionando una implementación de sus estructuras de datos y sus operaciones. Esto condujo a dos grandes desarrollos: 1 Historia de los sistemas de bases de datos, se encuentra en http://www3.uji.es/~mmarques/f47/apun/node6.html 2 La CODASYL (Conference on Data Systems Languages), conformado por representantes del gobierno y empresarios, tenía como objetivo definir las especificaciones estándar que permitieran la creación de bases de datos y el manejo de los datos. 3 En 1984 Codd publicaría 12 reglas que determinan la fidelidad de un sistema relacional al modelo relacional se encuentra en http://64.233.167.104/search?q=cache:H6RDGyJk8BcJ:petra.euitio.uniovi.es/asignaturas/bas.dat/c msimple/index.php%3Fdownload%3D12codd.pdf+codd&hl=es&ct=clnk&cd=4&gl=mx o El lenguaje de consultas estructurado (SQL), que se ha convertido en el lenguaje estándar de los sistemas relacionales. o La producción de varios SGBD relacionales, como DB2 y SLQ/DS de IBM, y ORACLE de ORACLE Corporation. En 1976, Chen4 presentó el modelo entidad-relación, que es la técnica más utilizada en el diseño de bases de datos. Como respuesta a la creciente complejidad de las aplicaciones que requieren bases de datos, han surgido dos nuevos modelos: el modelo de datos orientado a objetos y el modelo relacional extendido. 3.1. Diseño de bases de datos 3.1.1. Conceptos básicos Manejadores de archivos (campo y registro) El manejador de archivos, además de consistir en uno de los varios componentes funcionales de un sistema de base de datos; es el encargado de asignar espacio en el disco y de las estructuras de datos que se van a emplear para representar la información almacenada en el disco. Definición de Bases de Datos Una base de datos es una colección o depósito de datos integrados, almacenados en soporte secundario (no volátil) y con redundancia controlada. Los datos, que han de ser compartidos por diferentes usuarios y aplicaciones, deben mantenerse independientes de ellos, y su definición (estructura de la base de datos) única y almacenada junto con los datos, se ha de apoyar en un modelo de datos, el cual ha de permitir captar las interrelaciones y restricciones existentes en el mundo real. Los procedimientos de actualización y recuperación, comunes y bien determinados, facilitarán la seguridad del conjunto de los datos. 4 El modelo entidad-relación de Peter Chen se encuentra en http://www3.uji.es/~mmarques/f47/apun/node83.html Definición de Sistema Administrador de Bases de Datos Un sistema de manejo de base de datos consiste en un conjunto de datos relacionados entre sí y un grupo de programas para tener acceso a estos. Los sistemas de base de datos se diseñan para manejar grandes cantidades de información. El manejo de los datos incluye tanto la definición de las estructuras para el almacenamiento de la información como los mecanismos para el manejo de la misma. Además el sistema de base de datos debe cuidar la seguridad de la información almacenada en la base de datos, tanto contra las caídas del sistema como contra los intentos de acceso no autorizado. Elementos Los elementos de una Base de Datos son: Datos Los datos son caracteres que tienen una representación simbólica (numérica, alfabética, etc.) de un atributo o característica de una entidad. El dato no tiene valor semántico (sentido) en sí mismo, pero convenientemente tratado (procesado) se puede utilizar en la realización de cálculos o toma de decisiones. Campos (Atributos) Los caracteres se agrupan en campos de datos. Un campo es un elemento de datos elementales, tales como un nombre, número de empleado, dirección, estado, etc. Un campo está caracterizado por su tamaño o longitud y su tipo de datos (cadena de caracteres, entero, lógico, etc.). Los campos pueden variar en longitud pero en la mayoría de los lenguajes de programación los campos de longitud variable no están soportados y se suponen en longitud fija. Un campo es la unidad mínima de información de un registro. Registro (Tupla) Un registro es una colección de campos lógicamente relacionados que pueden ser tratados como una unidad por algún programa. Los registros pueden ser todos de longitud fija o de longitud variable. Archivo (Archivo) Un archivo es una colección de registros relacionados entre sí con aspectos en común y organizados para un propósito específico. Un archivo en una computadora, es una estructura diseñada para contener datos. Los datos están organizados de tal modo que puedan ser recuperados fácilmente, actualizados o borrados y almacenados de nuevo en el archivo con todos los cambios realizados. Campos (atributos) Datos Elementos de una base de datos Registro (tupla) Archivo (archivo) Figura 3.1. Elementos de una base de datos Bases de Datos Una colección de archivos a los que puede accederse por un conjunto de programas y que contienen todos ellos datos relacionados es lo que constituye una base de datos. Modelo Las bases de datos se pueden clasificar de acuerdo a su modelo de administración de datos; estos modelos son: Los datos en el modelo de red se representan por medio de conjuntos de registros (en el sentido que tiene la palabra en Pascal o PL/1) y las Modelo de red5 : relaciones entre los datos se representan con ligas, que pueden considerarse como apuntadores. Los registros de la base de datos se organizan en forma de conjuntos de gráficas arbitrarias. El modelo jerárquico es similar al modelo de red en cuanto a que los datos y las relaciones entre los datos se representan por medio de registros y Modelo ligas, respectivamente. El modelo jerárquico difiere del de red en que los Jerárquico 6. registros están organizados como conjuntos de árboles en vez de gráficas arbitrarias. Los datos y las relaciones entre los datos se representan por medio de Modelo relacional: Modelo entidadrelación: Modelo de datos orientado a objetos: 5 una serie de tablas, cada una de las cuales tiene varias columnas con nombres únicos. Concepción del mundo real en objetos elementales, denominados entidades, y en la relación existente entre estos. “Extensión del modelo E-R con los conceptos de la encapsulación, los métodos (funciones) y la identidad de los objetos”7 . El modelo solo se aplica a bases de datos antiguas. Hoy en día, es poca su utilización. 7 Silberschatz,., . Fundamentos de bases de datos,, p. 7. 6 Cuadro 3.1. Modelos de administración de datos Objetivo de un sistema manejador de base de datos El objetivo primordial de un sistema de manejo de base de datos es crear un ambiente en que es posible guardar y recuperar información de la base de datos en forma conveniente y eficiente. Además existen distintos objetivos que deben cumplir los sistemas de manejo de bases de datos: Abstracción de la información. Los sistemas de manejo de bases de datos ahorran a los usuarios detalles acerca del almacenamiento físico de los datos. Da lo mismo si una base de datos ocupa uno o cientos de archivos, este hecho se hace transparente al usuario. Así, se definen varios niveles de abstracción. Independencia. La independencia de los datos consiste en la capacidad de modificar el esquema (físico o lógico) de una base de datos sin tener que realizar cambios en las aplicaciones que se sirven de ella. Redundancia mínima. Un buen diseño de una base de datos logrará evitar la aparición de información repetida o redundante. De entrada, lo ideal es lograr una redundancia nula; no obstante, en algunos casos la complejidad de los cálculos hace necesaria la aparición de redundancias. Consistencia. En aquellos casos en los que no se ha logrado esta redundancia nula, será necesario vigilar que aquella información que aparece repetida se actualice de forma coherente, es decir, que todos los datos repetidos se actualicen de forma simultánea. Seguridad. La información almacenada en una base de datos puede llegar a tener un gran valor. Los sistemas de manejo de bases de datos deben garantizar que esta información se encuentra asegurada frente a usuarios malintencionados, que intenten leer información privilegiada; frente a ataques que deseen manipular o destruir la información; o simplemente ante las torpezas de algún usuario autorizado pero despistado. Normalmente, los sistemas de manejo de bases de datos disponen de un complejo sistema de permisos a usuarios y grupos de usuarios, que permiten otorgar diversas categorías de permisos. Integridad. Se tratan de adoptar las medidas necesarias para garantizar la validez de los datos almacenados. Es decir, se trata de proteger los datos ante fallos de hardware, datos introducidos por usuarios descuidados, o cualquier otra circunstancia capaz de corromper la información almacenada. Respaldo y recuperación. Los sistemas de manejo de bases de datos deben proporcionar una forma eficiente de realizar copias de seguridad de la información almacenada en ellos, y de restaurar a partir de estas copias los datos que se hayan podido perder. Control de la concurrencia. En la mayoría de entornos, lo más habitual es que sean muchas las personas que acceden a una base de datos, bien para recuperar información, bien para almacenarla. Y es también frecuente que dichos accesos se realicen de forma simultánea. Así pues, un sistema de manejo de base de datos debe controlar este acceso concurrente a la información, que podría derivar en inconsistencias. Tiempo de respuesta. Lógicamente, es deseable minimizar el tiempo que el sistema de manejo de base de datos tarda en darnos la información solicitada y en almacenar los cambios realizados. 3.1.2. Diseño de bases de datos Uno de los pasos cruciales en la construcción de una aplicación que maneje una base de datos, es sin duda, el diseño de la base de datos. Si las tablas no son definidas apropiadamente, podemos tener muchos dolores de cabeza al momento de ejecutar consultas a la base de datos para tratar de obtener algún tipo de información. Los procesos de definición de los requisitos y el diseño conceptual demandan identificar las exigencias de la información de los usuarios y representar éstos en un modelo bien definido. Para llevar a cabo esto necesitamos observar cuidadosamente la naturaleza de las condiciones de los usuarios y el significado preciso de la representación lógica de los mismos. Modelo Semántico Al construir el esquema, los diseñadores descubren la semántica (significado) de los datos de la empresa: encuentran entidades, atributos y relaciones, este modelo es el conceptual (también denominado de alto nivel) que facilitan la descripción global del conjunto de información de la empresa con independencia de la máquina (tanto del hardware como del SGBD concreto), por lo que sus conceptos son cercanos al mundo real (entidades, atributos, interrelaciones, etc.); son modelos de análisis, no de implementación. En general, los modelos conceptuales, por su nivel de abstracción y riqueza semántica, constituyen una interfaz útil entre el informático y los usuarios finales en las primeras etapas del proceso de diseño de bases de datos. Las características del modelo conceptual son: No suelen estar implementados en SGBD Independientes del SGBD Mayor nivel de abstracción Mayor nivel capacidad semántica Más enfocados al diseño de alto nivel (modelado conceptual) Interfaz usuario/informático Modelo Lógico8 Los modelos lógicos o convencionales se encuentran soportados por los SGBD y están orientados a describir los datos a nivel lógico para el SGBD (de ahí que también reciban el nombre de modelos de bases de datos), por lo que sus conceptos son propios de cada SGBD (tablas o relaciones en el caso del modelo Relacional, redes en el Codasyl, árboles en el Jerárquico, etc.) 8 El modelo lógico de las bases de datos, se encuentra en http://www.programacion.com/bbdd/tutorial/moddatos/6/ Las características del modelo convencional son: Implementación en SGBD comerciales Dependen del SGBD Más próximos a la computadora Poca capacidad semántica Más enfocados a la implementación Interfaz informático/sistema Nivel de “mediación” entre el nivel externo e interno Entidad/Relación (E/R) El modelo Entidad/Interrelación (ME/R), propuesto por Meter P. Chen (1976) y (1977) presenta el modelo como una vista unificada de los datos, concentrándose en la estructura lógica y abstracta de los datos, como representación del mundo real, con independencia de consideraciones de tipo físico. Como su nombre indica, el ME/R se basa en entidades (cualquier objeto de interés para el universo descrito) que se interrelacionan o asocian entre sí. Se pueden distinguir como conceptos básicos de este modelo: las entidades e interrelaciones (con sus atributos), además de los dominios que en este modelo se denominan conjuntos de valores Entidad es “una persona, lugar, cosa, concepto o suceso, real o abstracto, de interés para la empresa9 ” . Es aquel objeto acerca del cual queremos almacenar información en la base de datos. Su representación es un rectángulo: Interrelación es la asociación o correspondencia entre entidades. Se representa: AUTOR 9 (ANSI 1977) Escribe DOCUMENTO Atributo es cada una de las propiedades o características que tiene un tipo de entidad o de interrelación. Así, el tipo de entidad autor tiene como atributos el Nombre, la Nacionalidad, la Fecha nacimiento, la Biografía, etc; y los atributos del tipo de entidad documento son, entre otros, Titulo y Resumen. El tipo de interrelación que se escribe entre autor y documento tiene como atributo Orden_de_Firma. El conjunto de posibles valores que puede tomar un atributo recibe el nombre de dominio. El dominio tiene un nombre y una existencia propia con independencia de cualquier entidad o atributo. E/R Extendido El modelo EER (ER extendido) abarca todos los conceptos de modelado del modelo ER pero además incluye los conceptos de subclase y superclase y los conceptos relacionados de especialización y generalización, así como el de categoría que se usa para representar una colección de objetos de diferentes tipos de entidad. Asociado a estos conceptos está el importante mecanismo de herencia de atributos y relaciones. Modelo Físico El diseño físico de la base de datos es el proceso de elegir estructuras de almacenamiento y caminos de acceso específicos para que los archivos de la base de datos tengan un buen rendimiento con las diversas aplicaciones de la base de datos. Cada SGBD ofrece varias opciones de organización de archivos y caminos de acceso, entre ellas diversos tipos de indexación, agrupaciones de registros relacionados en bloques de disco, enlace de registros relacionados mediante apuntadores y varios tipos de técnicas de dispersión. Generalmente se utilizan los siguientes criterios para guiar la elección de las opciones de diseño lógico: Tiempo de respuesta: es el tiempo que transcurre entre la introducción de una transacción de base de datos para ser ejecutada y la obtención de la respuesta. Aprovechamiento del espacio: se refiere a la cantidad de espacio de almacenamiento que ocupan los archivos de la base de datos y sus estructuras de acceso en disco, tales como índices u otros caminos de acceso. Productividad de las transacciones: éste es el número medio de transacciones que el sistema de la base de datos puede procesar por minuto. Implementación de un E/R al modelo relacional El modelo Entidad/Relación es un modelo de datos semántico cuyo objetivo inicial era vencer algunas de las dificultades mostradas por el modelo relacional, al que pretendía sustituir. Concretamente, pretendía dotar de "significado" a las estructuras de datos, carentes del mismo, del modelo relacional. En la práctica, este modelo de datos no ha llegado a implementarse en ningún SGBD comercial, pero ha tenido una enorme repercusión como herramienta de modelado de bases de datos (paradójicamente, bases de datos relacionales), existiendo hoy en día herramientas de diseño conceptual que incorporan la totalidad de sus conceptos e incluso productos que transforman diagramas conceptuales E/R en bases de datos reales en diversos formatos. El modelado E/R se ha convertido en estándar para el diseño de bases de datos relacionales. Modelo de clases (UML) Las metodologías de modelado de objetos, tal como UML (Universal Modeling Technique o Lenguaje de Modelado Universal), se desarrolló principalmente para el diseño del software. La parte más importante del diseño del software supone el diseño de bases de datos a las que accederá mediante módulos de software. Los tipos de relaciones se denominan asociaciones en la terminología UML y las instancias de relaciones se llaman enlaces. Un atributo de relación, llamado atributo enlace, se coloca en un recuadro que se conecta a la línea de asociaciones mediante una línea de puntos. 3.1.3. Modelo relacional y diseño de bases de datos El modelo de datos relacional es relativamente reciente. Los primeros sistemas de base de datos estaban basados en el modelo jerárquico o en el de red. Estos dos primeros modelos están ligados a la implantación física de la base de datos que el modelo relacional. El modelo de datos relacional representa la base de datos como un conjunto de tablas. Aunque las tablas son un concepto simple e intuitivo, existe una correspondencia directa entre el concepto de una tabla y el concepto matemático de una relación. Modelos Prerelacionales Los modelos prerrelaciónales se refieren a aquellos que se encuentran en la programación estructurada; está programación utiliza un número limitado de estructuras de control que minimizan la complejidad de los problemas y que reducen los errores. Está incorporado entre otros elementos: el diseño descendiente, recursos abstractos y estructuras básicas. Modelos Postrelacionales Cuando hablamos de modelos postrelacionales nos referimos a la programación orientada a objetos; esto es que intenta simular el mundo real a través del significado de objetos que contiene características y funciones. Los lenguajes orientados a objetos se basan en la idea de un objeto, que es una combinación de variables locales y procedimientos llamados métodos. El término de encapsulamiento se usa para describir la combinación de estructuras de datos y de métodos que son manipulados por el objeto. Definición de relación Los matemáticos definen una relación como un subconjunto de un producto cartesiano de un listado de dominios. En el caso de los modelos relacionales se asignan nombres a los atributos, mientras que los matemáticos se basan en “nombres numéricos”, usando el entero 1 para denotar el atributo cuyo dominio aparece en primer lugar en el listado de dominios; 2 para el atributo cuyo dominio aparece en segundo lugar etc. Debido a que las tablas son básicamente relaciones, se utilizan los términos matemáticos relación y tupla en vez de los términos tabla y columna. Partes de la relación Encabezado: Conjunto de n atributos necesariamente distintos de la forma Nombre de Atributo: Nombre de Tipo. Cuerpo:. Conjunto de n tuplas en donde cada una es un conjunto de componentes de la forma Nombre de Atributo: Valor de Atributo. Propiedades de una relación De la definición de relación se infieren las siguientes propiedades: No hay tuplas duplicadas, esta propiedad se obtiene del hecho de que el cuerpo de una relación es un conjunto (en el sentido matemático) y los conjuntos por definición no contienen elementos repetidos. No hay orden en las tuplas, esta propiedad se desprende al observar que el cuerpo de la relación es un conjunto no ordenado; esto quiere decir que a ninguna n-ada se le puede asignar el título o nombre de la primera n-ada, segunda, o el número que sea de la relación y por supuesto tampoco existe el concepto de la n-ada siguiente en la relación misma. No hay orden en los atributos, esta propiedad se sigue del hecho de que el encabezado de la relación está definido como un conjunto. Como es de esperarse, no existen los conceptos del primer ó n-ésimo atributo, ni del siguiente atributo. De manera análoga se puede manejar una relación que controle tal orden. Dominio y tipos de datos Un dominio no es más que un tipo de datos, que puede ser simple (char, integer) o puede estar definido por el usuario. Pueden ser de cualquier clase, desde números y cadenas hasta grabaciones de sonido, mapas o dibujos. Esta compuesto por todos los valores posibles del tipo en cuestión, así el tipo (dominio) Integer se compone de todos los números enteros posibles y el tipo ciudad es el conjunto de todas las ciudades posibles. Cada dominio tiene asociados distintos tipos de operadores que permiten su manipulación. Estos son =, *, / Substring0, &, etc., los cuales dependen de cada sistema de bases de datos. Los operadores validos para cada domino se determinan por lo que representa en el modelo (semántica), no por su representación física. Se cuenta también con la posibilidad de hacer conversiones de tipos de datos. De esta manera se pueden realizar operaciones entre dominios de diferentes tipos. Álgebra relacional y cálculo relacional El álgebra relacional es un lenguaje de consulta de procedimientos. Existen cinco operaciones fundamentales en el álgebra relacional, que son: elegir, proyectar, producto-cartesiano, unión y diferencia-conjuntos. Todas ellas producen como resultado una nueva relación. Además de las cinco operaciones principales, se van a introducir otras operaciones, a saber, intersección-conjuntos, producto theta, producto natural y división. Las operaciones elegir y proyectas se denominan operaciones unarias, ya que actúan sobre una sola relación. Las otras tres relaciones operan sobre parejas de relaciones, por lo que se llaman operaciones binarias. La operación elegir opta por tuplas que satisfagan cierto predicado. Se utiliza la letra griega sigma minúscula para señalar la selección. El predicado aparece como subíndice de dicha letra. La relación que constituye el argumento se da entre paréntesis después de la misma letra. Normalización Es un proceso que clasifica relaciones, objetos, formas de relación y demás elementos en grupos, con base en las características que cada uno posee. Si se identifican ciertas reglas, se aplica una categoría; si se definen otras reglas, se aplicará otra categoría. La forma de efectuar esto es a través de los tipos de dependencias que podemos determinar dentro de la relación. Cuando las reglas de clasificación sean más y más restrictivas, diremos que la relación está en una forma normal más elevada. Formas Normales Primera forma normal Para que una relación esté en primera forma normal, debe ser solamente una relación propia, una matriz m por n, donde: -Ninguna celda de la matriz está vacía; -El valor n cualquier columna está definido por el dominio para dicho atributo. -Cada tupla tiene una clave que la identifica en forma unívoca, pero dicha clave no significa orden. La aplicación determina la relación; para que una relación sea normalizada en pasos adicionales, debe encontrarse en la primera forma normal. Colocar los datos en la primera forma normal está a cargo del diseñador de la aplicación. Estos datos se encuentran disponibles de alguna manera inicialmente. Si la aplicación existe en forma manual, o ha sido anteriormente computarizada pero no todavía como relación, el diseñador reorganiza los datos de modo de conformar una matriz de primera forma normal. Segunda Forma Normal Una relación está en segunda forma normal solamente si todos los atributos son dependientes en forma completa de la clave. Su nombre ya nos indica el hecho de que la segunda forma normal es por lo general el próximo paso de normalización y descomposición. Para ser accesible a la normalización, y poder ser puesta en segunda forma normal, la relación debe poseer las siguientes propiedades: Debe estar en primera forma normal. Debe tener una clave compuesta. Tercera forma normal Una relación se encuentra en tercera forma normal si no existen transitividades entre sus atributos y si ya se encuentra en segunda forma normal. Una relación R a poner en tercera forma normal debe estar en la segunda forma normal. Es muy común que R sea una sub-relación; la relación original estaba en primera forma normal (para ponerla en segunda forma normal fue descompuesta en varias sub-relaciones). Estas son ahora candidatas a una descomposición adicional. Recordamos que las propiedades de la segunda forma normal son: Tenemos una matriz m x n con un valor determinado para cada componente de cada tupla. Cada valor es obtenido a partir de un dominio propiamente definimos Cada valor contiene una clave, ya sea simple o compuesta Cada componente no clave es dependiente en forma completa de su clave. En consecuencia es evidente que tenemos, o bien una clave simple, o una clave compuesta de la cual todos los componentes no clave son dependientes en forma completa. Cuarta forma normal La tercera forma normal toma en cuenta la dependencia transitiva y provee una reducción óptima universal, excepto para los casos infrecuentes de dependencia multivaluadas. Existe una dependencia multivaluada cuando un valor de una variable está siempre asociado con varios valores de otra u otras variables dependientes que son siempre las mismas y están siempre presentes. Para poner una relación o sub-relación en la cuarta forma normal debe poder aplicarse lo siguiente: Debe estar en la tercera forma normal. Deben existir una o más multidependencias. Proceso de descomposición sin pérdida El proceso de descomposición sin pérdida es en realidad un proceso de proyección y decimos que es sin pérdida si juntamos de nuevo las proyecciones y regresamos en la relación original. Reglas de CODD Regla 0: Para que un sistema se denomine sistema de administración de bases de datos relacionales, debe usar (exclusivamente) sus capacidades relacionales para gestionar la base de datos. Regla 1: Regla de la información Toda la información en una base de datos relacional se representa explícitamente en el nivel lógico exactamente de una manera: con valores en tablas. - Por tanto los metadatos (diccionario, catálogo) se representan exactamente igual que los datos de usuario. - Y puede usarse el mismo lenguaje (ej. SQL) para acceder a los datos y a los metadatos (regla 4) - Un valor posible es el valor nulo, con sus dos interpretaciones: Valor desconocido (ej. estado civil desconocido) Valor no aplicable (ej. el licenciado no tiene titulo profesional) Regla 2: Regla del acceso garantizado Para todos y cada uno de los datos (valores atómicos) de una Base de Datos Relacional (BDR) se garantiza que son accesibles a nivel lógico utilizando una combinación de nombre de tabla, valor de clave primaria y nombre de columna. Cualquier dato almacenado en una BDR tiene que poder ser direccionado unívocamente. Para ello hay que indicar en qué tabla está, cuál es la columna y cuál es la fila (mediante la clave primaria). Regla 3: Tratamiento sistemático de valores nulos Los valores nulos (que son distintos de la cadena vacía, blancos, 0, ...) se soportan en los SGBD totalmente relacionales para representar información desconocida o no aplicable de manera sistemática, independientemente del tipo de datos. Se reconoce la necesidad de la existencia de valores nulos, para un tratamiento sistemático de los mismos. Hay problemas para soportar los valores nulos en las operaciones relacionales, especialmente en las operaciones lógicas. Regla 4: Catálogo dinámico en línea basado en el modelo relacional La descripción de la base de datos se representa a nivel lógico de la misma manera que los datos normales, de modo que los usuarios autorizados pueden aplicar el mismo lenguaje relacional a su consulta, igual que lo aplican a los datos normales. Es una consecuencia de la regla 1 que se destaca por su importancia. Los metadatos se almacenan usando el modelo relacional, con todas las consecuencias. Regla 5: Regla del sublenguaje de datos completo Un sistema relacional debe soportar varios lenguajes y varios modos de uso de terminal (Ej.: rellenar formularios, etc.). Sin embargo, debe existir al menos un lenguaje cuyas sentencias sean expresables, mediante una sintaxis bien definida, como cadenas de caracteres y que sea completo, soportando: Definición de datos Definición de vistas Manipulación de datos (interactiva y por programa) Limitantes de integridad Limitantes de transacción (iniciar, realizar, deshacer) (Begin, commit, rollback). Regla 6: Regla de actualización de vistas Todas las vistas que son teóricamente actualizables se pueden actualizar por el sistema. El problema es determinar cuáles son las vistas teóricamente actualizables, ya que no está muy claro. Cada sistema puede hacer unas suposiciones particulares sobre las vistas que son actualizables. Regla 7: Inserción, actualización y borrado de alto nivel La capacidad de manejar una relación base o derivada como un solo operando se aplica no sólo a la recuperación de los datos (consultas), si no también a la inserción, actualización y borrado de datos. Esto es, el lenguaje de manejo de datos también debe ser de alto nivel (de conjuntos). Algunas bases de datos inicialmente sólo podían modificar las tuplas de la base de datos de una en una (un registro de cada vez). Regla 8: Independencia física de datos Los programas de aplicación y actividades del terminal permanecen inalterados a nivel físico cuando quiera que se realicen cambios en las representaciones de almacenamiento o métodos de acceso.. El modelo relacional es un modelo lógico de datos, y oculta las características de su representación física: Es la capacidad de modificar el esquema interno sin tener que alterar el esquema conceptual (o los externos). Regla 9: Independencia lógica de datos Los programas de aplicación y actividades del terminal permanecen inalterados a nivel lógico cuando quiera que se realicen cambios a las tablas base que preserven la información. Cuando se modifica el esquema lógico preservando información (no valdría por ejemplo eliminar un atributo) no es necesario modificar nada en niveles superiores. Regla 10: Independencia de integridad Los limitantes de integridad específicos para una determinada base de datos relacional deben poder ser definidos en el sublenguaje de datos relacional, y almacenables en el catálogo, no en los programas de aplicación. El objetivo de las bases de datos no es sólo almacenar los datos, si no también sus relaciones y evitar que éstas (limitantes) se codifiquen en los programas. Por tanto en una BDR se deben poder definir limitantes de integridad. Regla 11: Independencia de distribución Una BDR tiene independencia de distribución. Las mismas órdenes y programas se ejecutan igual en una BD centralizada que en una distribuida. Las BDR son fácilmente distribuibles: Se parten las tablas en fragmentos que se distribuyen. Cuando se necesitan las tablas completas se recombinan usando operaciones relacionales con los fragmentos. Sin embargo se complica más la gestión interna de la integridad. Regla 12: Regla de la no subversión Si un sistema relacional tiene un lenguaje de bajo nivel (un registro de cada vez), ese bajo nivel no puede ser usado para saltarse (subvertir) las reglas de integridad y los limitantes expresados en los lenguajes relacionales de más alto nivel. REGLAS DE CODD Regla 0. Regla 1. Regla de la información Regla 2: Regla del acceso garantizado Regla 3: Tratamiento sistemático de valores nulos Regla 4: Catálogo dinámico en línea basado en el modelo relacional Regla 5: Regla del sublenguaje de datos completo Regla 6: Regla de actualización de vistas Regla 7: Inserción, actualización y borrado de alto nivel Regla 8: Independencia física de datos Regla 9: Independencia lógica de datos Regla 10: Independencia de integridad Regla 11: Independencia de distribución Regla 12: Regla de la no subversión Cuadro 3.2. Reglas de CODD