Licenciatura en Documentación: Bases de datos documentais Curso 2011 – 2012 El modelo relacional El modelo relacional constituye una alternativa para la organización y representación de la información que se pretende almacenar en una base de datos. Se trata de un modelo teórico matemático que, además de proporcionarnos los elementos básicos de modelado (las relaciones), incluye un conjunto de operadores (definidos en forma de un álgebra relacional) para su manipulación, sin ambigüedad posible. El carácter formal del modelo relacional hace relativamente sencilla su representación y gestión por medio de herramientas informáticas. No es casual, pues, que haya sido elegido como referencia para la construcción de la gran mayoría de los Sistemas de Gestión de Bases de Datos comerciales disponibles en el mercado; ni tampoco que sea también habitualmente seleccionado como modelo de referencia para la elaboración del esquema lógico de una base de datos, como tercer paso de la habitual metodología de diseño de BDs (después del análisis de requerimientos y la elaboración del esquema conceptual). En el modelo relacional se basa en el concepto matemático de relación. En este modelo, la información se representa en forma de “tablas” o relaciones, donde cada fila de la tabla se interpreta como una relación ordenada de valores (un conjunto de valores relacionados entre sí). El siguiente ejemplo presenta una relación que representa al conjunto de los departamentos de una determinada empresa, y que recoge información sobre los mismos. Num Nombre Localidad D-01 Ventas A Coruña D-02 I+D Ferrol Figura 1: relación “Departamentos” Definiciones Formalmente, una relación se define como un conjunto de n-tuplas; donde una n-tupla se define a su vez como un conjunto ordenado de valores atómicos (esto es, no divisibles ni descomponibles en valores mas “pequeños”. En el ejemplo 1, la relación mostrada incluye dos 3-tuplas: (‘D-01’, ‘Ventas’, ‘A Coruña’) y (‘D-02’, ‘I+D’, ‘Ferrol’). Cada tupla incluye información sobre los departamentos de una determinada empresa con sede en Galicia: el identificador del departamento dentro de la empresa, su nombre, y la localidad donde tiene su sede. En cada tupla, los tres valores están relacionados por el hecho de describir todos ellos al mismo departamento. Cada relación, vista como una tabla, consta de un conjunto de columnas; cada una de esas columnas recibe el nombre de atributo. A cada atributo de una relación le corresponde un nombre, que debe ser único dentro de la relación, y un dominio: el conjunto de valores válidos para un atributo; o, dicho de otra manera, el conjunto de valores que cada tupla de la relación puede tomar para ese atributo. En el caso de la relación de nuestro ejemplo, los atributos de la misma serían Num, Nombre y Localidad. Cada uno de ellos tendrá un dominio asociado: el conjunto de los Autor: Juan Ramón López Rodríguez 1 Licenciatura en Documentación: Bases de datos documentais Curso 2011 – 2012 identificadores válidos de departamento (una cadena alfanumérica con formato „D-xx‟), el conjunto de todos los nombres de departamento válidos (cadenas de texto de cualquier longitud), y el conjunto de todas los nombres de localidades gallegas (ídem), respectivamente. El esquema de una relación es una descripción de su estructura interna (es decir, los atributos que la componen), en la forma siguiente: R (A1, ... , An) …siendo R el nombre de la relación, y A1, ... , An los nombres de sus n atributos. Así, el esquema de la relación Departamentos sería: Departamentos (Num, Nombre, Localidad) Podemos afirmar que el esquema de una relación constituye su intensión, es decir, la parte invariante de la relación. En nuestro ejemplo, el tipo de información que reflejaremos sobre los departamentos será siempre la misma: el código, nombre y localidad de cada uno. Sin embargo, la información recogida en una relación está expuesta constantemente al cambio: nuestra empresa puede sufrir reestructuraciones, apareciendo o desapareciendo departamentos, o viendo estos modificada su sede. Se dice que el conjunto de las tuplas que conforman una relación constituye su extensión: la parte variable de la relación. De acuerdo con la notación expresada antes, podemos representar a cada tupla de una relación R por medio del siguiente formato: (v1, ... , vn) siendo v1 el valor de la tupla para el atributo A1, y vn el valor de la tupla para el atributo An. Por ejemplo (‘D-01’, ‘Ventas’, ‘A Coruña’) sería la tupla correspondiente al departamento de Ventas en la relación Departamentos. A partir del esquema de la relación es posible determinar su grado1: el número de atributos de los que consta. Así, la relación de nuestro ejemplo sería de grado 3. Finalmente, es preciso revisar en detalle la definición del concepto de relación. Dicha definición especifica que una relación consiste en un conjunto de tuplas. Eso implica que no se puede aplicar un orden de ningún tipo a las tuplas de una relación (no están ordenadas). Eso implica que las dos relaciones que mostramos a continuación son en realidad la misma relación, presentada de dos maneras diferentes: Num Nombre Localidad D-01 Ventas A Coruña D-02 I+D Ferrol Num Nombre Localidad D-02 I+D Ferrol D-01 Ventas A Coruña Figura 2: La misma relación presentada con sus tuplas en diferente orden 1 Llegados a este punto, es necesario destacar la importancia de distinguir los conceptos de relación, atributo y grado del modelo relacional y los de tipo de relación, atributo y grado del modelo entidadrelación. Pese a la desafortunada coincidencia de terminología, se trata de conceptos diferentes con diferente significado. Autor: Juan Ramón López Rodríguez 2 Licenciatura en Documentación: Bases de datos documentais Curso 2011 – 2012 Nulos Hasta este punto, hemos presentado el elemento fundamental sobre el que se basa el modelo relacional: la relación. Hemos visto que las relaciones están constituidas por tuplas, y que cada tupla contiene información sobre un determinado objeto del mundo real, proporcionando valores a un conjunto de atributos establecidos en la definición de la relación. Desgraciadamente sucede que, en ocasiones, es complicado conocer los valores de esos atributos para un determinado objeto (para una determinada tupla). Por ejemplo, en el caso de la relación Departamentos que venimos utilizando como referencia, puede suceder que un departamento de reciente creación no tenga todavía asociada una sede definitiva (ver ejemplo 3). Num D-01 D-02 D-03 Nombre Localidad Ventas A Coruña I+D Ferrol Contabilidad ? Figura 3: relación “Departamentos” En todos los casos en los que el valor de un atributo para una determinada tupla… …no se conozca …no exista el valor / el atributo no sea aplicable …el modelo relacional permite el uso de un valor especial, no perteneciente a ningún dominio particular: el valor nulo Num D-01 D-02 D-03 Nombre Localidad Ventas A Coruña I+D Ferrol Contabilidad Nulo Figura 4: relación “Departamentos”, con el uso de valores nulos Es necesario indicar que el uso de los valores nulos debe ser evitado en lo posible, ya que (por motivos cuya explicación va más allá del objetivo de estas notas) suele dar lugar a problemas a la hora de manipular o acceder a la información. Restricciones de integridad Cada tupla de una relación debe proporcionar valores a sus atributos. ¿De cualquier manera? No. Para garantizar la consistencia y la facilidad de manipulación de la información representada, existen una serie de reglas que deben ser cumplidas y que son un elemento constituyente del modelo relacional. A esas reglas de consistencia se las conoce, en la terminología del modelo, como restricciones de integridad. Podemos distinguir varios tipos de restricciones: Restricción de DOMINIO: “Los dominios de los atributos de una relación deben ser atómicos” Esta restricción exige que los valores de cualquier tupla de una relación R correspondientes a los atributos A1, ..., An de R deben ser valores atómicos. Esto es, esos valores no pueden ser descomponibles en valores más pequeños o simples. Esta condición pretende garantizar que todas las relaciones presenten un formato regular, que pueda ser fácilmente manipulable por Autor: Juan Ramón López Rodríguez 3 Licenciatura en Documentación: Bases de datos documentais Curso 2011 – 2012 medio de un sencillo procedimiento o algoritmo, implementado en la forma de un programa informático. En el caso de nuestro ejemplo, estos dos casos no serían válidos: Num Nombre Localidad A Coruña D-01 Ventas Ferrol D-02 I+D Ferrol Figura 5: relación no válida por uso de valor múltiple En la figura 5 se muestra un ejemplo de una relación en la que una de sus tuplas, la correspondiente al departamento de Ventas, presenta un doble valor para el atributo Localidad. De esa forma se pretende representar el hecho de que Ventas tiene dos sedes: A Coruña y Ferrol. Este formato viola la restricción de dominio, ya que rompe la regularidad de la “tabla” (de la relación). El único formato de representación posible de esa información sería el siguiente: Num Nombre Localidad D-01 Ventas A Coruña D-02 I+D Ferrol D-01 Ventas Ferrol Figura 6: relación corregida para ser correcta En la figura 6 se muestra otro ejemplo en el que ahora el atributo Localidad se usa para almacenar conjuntamente la sede de cada departamento y el correspondiente código postal, aun cuando se espera que posteriormente estos dos elementos de información vayan a necesitar ser accedidos por separado. Se trata por lo tanto de un atributo compuesto que viola la restricción de dominio, ya que rompe el modo de acceso regular al valor de un atributo: no se trata ya de recuperar simplemente al valor (la sede correspondiente a cada departamento), sino que ahora, en algunos casos, es necesario separar ese valor en sus elementos constituyentes (la localidad y el código postal). Num Nombre Localidad D-01 Ventas A Coruña D-02 I+D 15528 Ferrol Figura 7: relación no válida por uso de valor compuesto Restricción de CLAVE: “En una relación no puede haber ninguna tupla repetida” Ningún conjunto admite, por definición, la existencia de elementos repetidos en su contenido. Tratándose de un conjunto de tuplas, las relaciones requieren la misma exigencia. Que la extensión de una relación no incluya tuplas repetidas, implica que todas las tuplas que contiene puedan ser diferenciadas entre sí por el valor de al menos un atributo. Eso nos lleva al concepto de superclave de una relación: cualquier subconjunto (propio o no) de atributos de la relación, que nos permita Autor: Juan Ramón López Rodríguez 4 Licenciatura en Documentación: Bases de datos documentais Curso 2011 – 2012 diferenciar a cualesquiera dos tuplas que formen parte de su extensión a partir de los valores de las tuplas para esos atributos. Toda relación cuenta con una o más superclaves. En el peor de los casos, tendremos una superclave única: aquella formada por el conjunto de todos los atributos de la relación. En el caso de nuestro ejemplo, serían superclaves los siguientes conjuntos de atributos: (Num, Nombre, Localidad) (Num, Localidad) (Nombre, Localidad) No existen (ni pueden existir) dos tuplas en la relación Departamentos para los que coincidan simultáneamente los valores de número, nombre y localidad; ni siquiera los valores de número y localidad; o los de nombre y localidad. Sin embargo, hemos visto que dos tuplas de la relación pueden coincidir en sus valores de número y nombre (ver Figura 6). Por lo tanto, los siguientes subconjuntos de atributos no constituyen una superclave de la relación: (Num, Nombre) (Num) (Nombre) (Localidad) Para poder distinguir a dos tuplas cualesquiera de una relación, sería necesario, en principio, comparar, uno por uno, los valores de todos y cada uno de sus atributos. Sin embargo, y por cuestiones prácticas, lo ideal sería seleccionar un subconjunto mínimo de los atributos suficiente para identificarlas. Llamamos claves candidatas de la relación todas las superclaves mínimas o no descomponibles, es decir, aquellos conjuntos de atributos de los que ninguno puede ser eliminado sin provocar que el conjunto deje de ser una superclave de la relación. En el caso de nuestro ejemplo, el conjunto (Num, Nombre, Localidad) contiene a las superclaves (Num, Localidad) y (Nombre, Localidad), y no sería, por lo tanto, superclave mínima de la relación (si eliminamos Nombre o Localidad del conjunto, este seguirá siendo clave candidata). Sí lo serían tanto (Num, Localidad) como (Nombre, Localidad): pueden existir tuplas diferentes con el mismo número, nombre o localidad (ver Figura 6). Pero nunca existirán dos tuplas en la relación con el mismo número y localidad simultáneamente, ni con el mismo nombre y sede. Todas las claves candidatas son superclaves mínimas, cuyos valores son suficientes para distinguir a dos tuplas cualesquiera de una relación. A efectos prácticos, el modelo relacional recomienda seleccionar una sola de las posibles claves candidatas para ser utilizada cuando sea necesaria: la escogida será la clave primaria de la relación. En el ejemplo, podríamos seleccionar entre (Num, Localidad) y (Nombre, Localidad). Cualquiera de las dos claves candidatas sería una correcta clave primaria de la relación. La clave primaria de una relación debe ser indicada en la representación del esquema de la misma, subrayando los nombres de los atributos que forman parte de la misma. Autor: Juan Ramón López Rodríguez 5 Licenciatura en Documentación: Bases de datos documentais Curso 2011 – 2012 Departamentos (Num, Nombre, Localidad) Restricción de INTEGRIDAD de ENTIDAD: “Ninguna tupla de una relación puede tomar valores nulos en los atributos que forman parte de su clave primaria” La necesidad de esta restricción es clara: dado que es la clave primaria la que nos permite distinguir a las tuplas entre sí, los valores correspondientes a la clave deben ser conocidos en cada tupla para poder diferenciarla. En la figura 6 presentábamos una posible extensión de la relación, en la que veíamos que un mismo departamento podía tener sedes en dos o más localidades. Suponiendo que dichas localidades fuesen desconocidas, la relación de la Figura 6 presentaría la siguiente extensión: Num D-01 D-02 D-01 Nombre Localidad Ventas I+D Ferrol Ventas Figura 8: relación corregida para ser correcta Siendo desconocidos los valores de Localidad en ambas tuplas, es imposible distinguir a una de otra. Se trata por tanto de una relación incorrecta, no válida, debido a que viola la restricción de integridad de entidad. Restricciones de INTEGRIDAD REFERENCIAL: “Si una tupla de una relación R1 hace referencia a una relación R2, debe referirse a una tupla que exista realmente en R2”. Este tipo de restricciones permite garantizar la consistencia en el caso de relaciones que mantengan una cierta vinculación. Por ejemplo, volvamos a nuestro ejemplo de la empresa. Supongamos que nuestra relación Departamentos presenta, en un momento dado, la siguiente extensión: Num Nombre Localidad D-01 Ventas A Coruña D-02 I+D Ferrol Figura 9: relación Departamentos Y que además, contamos también con una relación Empleados que nos permite mantener información sobre los empleados de nuestra empresa, y cuya extensión es la que sigue: NSS 1253 3356 9012 Nombre Juan Pedro María NumD Localidad D-01 A Coruña D-02 Ferrol D-03 Narón Figura 10: relación Empleados La relación pretende representar el número de seguridad social de cada empleado (mediante el atributo NSS, que actúa como clave primaria), su nombre, y todos los datos relativos al departamento en el que trabaja. Para evitar problemas de redundancia, en lugar de representar todos los datos de cada departamento, se incluye una referencia a la tupla que le corresponde en la relación Departamentos. Esa referencia se realiza por medio de los valores de la clave primaria de la tupla: el número de departamento (NumD) y la Autor: Juan Ramón López Rodríguez 6 Licenciatura en Documentación: Bases de datos documentais Curso 2011 – 2012 localidad donde tiene su sede (Localidad). Evidentemente, para que la referencia sea correcta y tengamos acceso a la información sobre el departamento al que pertenece un empleado, la tupla referenciada debe existir en la tabla Departamentos. En el caso del ejemplo, los departamentos referenciados en el caso de los empleados Juan y Pedro existen realmente. En cambio, no existe ningún departamento D03, con sede en Narón (al menos, este hecho no está reflejado en la tabla Departamentos) y, por lo tanto, no es posible averiguar nada acerca del departamento al que pertenece María (ni siquiera su nombre). La tupla correspondiente a María viola una restricción de integridad referencial de Empleados con respecto a Departamentos. Los atributos NumD y Localidad de Empleados constituyen un ejemplo de clave foránea: son atributos de la relación Empleados, pero constituyen también la clave primaria de Departamentos: ese es el motivo de que sean precisamente ellos los que se usen para referenciar al departamento de cada empleado. Dadas dos relaciones R1 y R2, un conjunto de atributos A1...An de R1 se dice clave foránea de R1 con respecto a R2 si A1...An es también la clave primaria de R2. Dicho de otra manera, A1...An es una clave foránea de R1 con respecto a R2 si ese conjunto de atributos figura tanto en el esquema de R1 como en el de R2; usándose en R2 como clave primaria, y usándose en R1 para referenciar a tuplas de R2. Hecha ya la definición de clave foránea, podemos dar ya una definición un poco más formal de las restricciones de integridad referencial: “Dadas dos relaciones R1 y R2, los valores que tome cualquier clave foránea de R1 con respecto a R2 sólo pueden ser valores que correspondan a la clave primaria de alguna tupla de R2”. Esquema de una BD relacional Como decíamos al principio, el modelo relacional es el seleccionado habitualmente como referencia para la elaboración del esquema lógico de una base de datos. Una base de datos, desde el punto de vista relacional, está formada por un conjunto de relaciones. El esquema lógico de una base de datos consistirá, pues, en la unión de los esquemas de todas las relaciones que componen la base de datos, conjuntamente con todas las restricciones de integridad que afectan a esas relaciones. Además, para facilitar la identificación de las claves foráneas en las relaciones que las incluyan, estas se representarán gráficamente junto con el esquema. Las claves foráneas se destacan en la representación del esquema conceptual de una base de datos uniéndolas mediante flechas dirigidas a las claves primarias que representan, tal y como se muestra en la figura 11. Departamentos (Num, Nombre, Localidad) Empleados (NSS, Nombre, NumD, Localidad) Figura 11: Esquema lógico de la BD, con representación explícita de las claves foráneas Autor: Juan Ramón López Rodríguez 7 Licenciatura en Documentación: Bases de datos documentais Curso 2011 – 2012 Bibliografía - R. Elmasri y S. Navathe. Fundamentos de los Sistemas de Bases de Datos (3ª edición). Addison-Wesley, 2002. - A. Silberschatz, H. F. Korth y S. Sudarshan. Fundamentos de Bases de Datos (4ª edición). McGraw Hill, 2002 Autor: Juan Ramón López Rodríguez 8