64
El modelo relacional y el álgebra relacional Dolors Costal Costa PID_00171668

Mod3 Bases de datos

Embed Size (px)

DESCRIPTION

Mod3 Bases de dato

Citation preview

  • El modelorelacional y ellgebra relacional

    Dolors Costal Costa

    PID_00171668

  • FUOC PID_00171668 El modelo relacional y el lgebra relacional

    Ninguna parte de esta publicacin, incluido el diseo general y la cubierta, puede ser copiada,reproducida, almacenada o transmitida de ninguna forma, ni por ningn medio, sea ste elctrico,qumico, mecnico, ptico, grabacin, fotocopia, o cualquier otro, sin la previa autorizacin escritade los titulares del copyright.

  • FUOC PID_00171668 El modelo relacional y el lgebra relacional

    ndice

    Introduccin............................................................................................... 5

    Objetivos....................................................................................................... 6

    1. Introduccin al modelo relacional............................................... 7

    2. Estructura de los datos.................................................................... 92.1. Visin informal de una relacin ................................................. 92.2. Visin formal de una relacin .................................................... 102.3. Diferencias entre relaciones y ficheros ....................................... 132.4. Clave candidata, clave primaria y clave alternativa de las

    relaciones ..................................................................................... 142.5. Claves forneas de las relaciones ................................................ 162.6. Creacin de las relaciones de una base de datos ........................ 19

    3. Operaciones del modelo relacional............................................... 20

    4. Reglas de integridad......................................................................... 224.1. Regla de integridad de unicidad de la clave primaria ................. 234.2. Regla de integridad de entidad de la clave primaria ................... 244.3. Regla de integridad referencial ................................................... 25

    4.3.1. Restriccin ...................................................................... 284.3.2. Actualizacin en cascada ............................................... 294.3.3. Anulacin ....................................................................... 314.3.4. Seleccin de la poltica de mantenimientode la

    integridad referencial ..................................................... 334.4. Regla de integridad de dominio ................................................. 34

    5. El lgebra relacional......................................................................... 365.1. Operaciones conjuntistas ............................................................ 39

    5.1.1. Unin ............................................................................. 405.1.2. Interseccin .................................................................... 415.1.3. Diferencia ....................................................................... 425.1.4. Producto cartesiano ....................................................... 43

    5.2. Operaciones especficamente relacionales .................................. 455.2.1. Seleccin ........................................................................ 455.2.2. Proyeccin ...................................................................... 465.2.3. Combinacin ................................................................. 47

    5.3. Secuencias de operaciones del lgebra relacional ....................... 515.4. Extensiones: combinaciones externas ........................................ 52

  • FUOC PID_00171668 El modelo relacional y el lgebra relacional

    Resumen....................................................................................................... 56

    Ejercicios de autoevaluacin.................................................................. 57

    Solucionario................................................................................................ 59

    Glosario........................................................................................................ 61

    Bibliografa................................................................................................. 64

  • FUOC PID_00171668 5 El modelo relacional y el lgebra relacional

    Introduccin

    Este mdulo didctico est dedicado al estudio del modelo de datos relacionaly del lgebra relacional.

    Actualmente el modelo relacional tiene una gran relevancia. Sus conceptosfundamentales estn bien asentados y, adems, los sistemas de gestin de basesde datos (SGBD) relacionales son los ms extendidos en su utilizacin prctica.Por estos motivos pensamos que es importante conocerlo.

    El estudio del modelo relacional sirve, adems, para facilitar el aprendizajedel lenguaje SQL. Este lenguaje permite definir y manipular bases de datosrelacionales. Los fundamentos del modelo relacional resultan imprescindiblespara conseguir un buen dominio del SQL.

    En este mdulo se analizan tambin las operacionesdellgebrarelacional,que sirven para hacer consultas a una base de datos (BD). Es preciso conocerestas operaciones porque nos permiten saber qu servicios de consulta debeproporcionar un lenguaje relacional. Otra aportacin del lgebra relacional esque facilita la comprensin de algunas de las construcciones del lenguaje SQL.Adems, constituye la base para el estudio del tratamiento de las consultasque efectan los SGBD internamente (especialmente en lo que respecta a laoptimizacin de consultas). Este ltimo tema es relevante para estudios msavanzados sobre BD.

  • FUOC PID_00171668 6 El modelo relacional y el lgebra relacional

    Objetivos

    En los materiales didcticos de este mdulo, encontraris las herramientas in-dispensables para alcanzar los siguientes objetivos:

    1. Conocer los fundamentos del modelo de datos relacional.

    2. Saber distinguir las caractersticas que debe tener un SGBD relacional paraque sea coherente con los fundamentos del modelo relacional.

    3. Comprender las ventajas del modelo relacional que derivan del alto gradode independencia de los datos que proporciona, y de la simplicidad y launiformidad del modelo.

    4. Conocer las operaciones del lgebra relacional.

    5. Saber utilizar las operaciones del lgebra relacional para consultar una BD.

  • FUOC PID_00171668 7 El modelo relacional y el lgebra relacional

    1. Introduccin al modelo relacional

    El modelorelacional es un modelo de datos y, como tal, tiene en cuentalos tres aspectos siguientes de los datos:

    1) La estructura, que debe permitir representar la informacin que nosinteresa del mundo real.

    2) La manipulacin, a la que da apoyo mediante las operaciones deactualizacin y consulta de los datos.

    3) La integridad, que es facilitada mediante el establecimiento de reglasde integridad; es decir, condiciones que los datos deben cumplir.

    Un SGBD relacionalda apoyo a la definicin de datos mediante la estructurade los datos del modelo relacional, as como a la manipulacin de estos datoscon las operaciones del modelo; adems, asegura que se satisfacen las reglasde integridad que el modelo relacional establece.

    Los principios del modelo de datos relacional fueron establecidos por E.F. Codden los aos 1969 y 1970. De todos modos, hasta la dcada de los ochenta no seempezaron a comercializar los primeros SGBD relacionales con rendimientosaceptables. Cabe sealar que los SGBD relacionales que se comercializan ac-tualmente todava no soportan todo lo que establece la teora relacional hastael ltimo detalle.

    El principalobjetivodelmodelodedatosrelacional es facilitar que la BD seapercibida o vista por el usuario como una estructura lgica que consiste en unconjunto de relaciones y no como una estructura fsica de implementacin.Esto ayuda a conseguir un alto grado de independencia de los datos.

    Un objetivo adicional del modelo es conseguir que esta estructura lgica conla que se percibe la BD sea simple y uniforme. Con el fin de proporcionar sim-plicidad y uniformidad, toda la informacin se representa de una nica ma-nera: mediante valores explcitos que contienen las relaciones (no se utilizanconceptos como por ejemplo apuntadores entre las relaciones). Con el mismopropsito, todos los valores de datos se consideran atmicos; es decir, no esposible descomponerlos.

  • FUOC PID_00171668 8 El modelo relacional y el lgebra relacional

    Hay que precisar que un SGBD relacional, en el nivel fsico, puede emplearcualquier estructura de datos para implementar la estructura lgica formadapor las relaciones. En particular, a nivel fsico, el sistema puede utilizar apun-tadores, ndices, etc. Sin embargo, esta implementacin fsica queda oculta alusuario.

    En los siguientes apartados estudiaremos la estructura de los datos, las opera-ciones y las reglas de integridad del modelo relacional. Hay dos formas posi-bles de enfocar el estudio de los contenidos de este mdulo. La primera con-siste en seguirlos en orden de exposicin. De este modo, se van tratando todoslos elementos de la teora del modelo relacional de forma muy precisa y enun orden lgico. Otra posibilidad, sin embargo, es empezar con la lectura delresumen final del mdulo y leer despus todo el resto de los contenidos enel orden normal. El resumen describe los aspectos ms relevantes de la teorarelacional que se explican y, de este modo, proporciona una visin global delos contenidos del mdulo que, para algunos estudiantes, puede ser til com-prender antes de iniciar un estudio detallado.

  • FUOC PID_00171668 9 El modelo relacional y el lgebra relacional

    2. Estructura de los datos

    El modelo relacional proporciona una estructura de los datos que con-siste en un conjunto de relaciones con objeto de representar la infor-macin que nos interesa del mundo real.

    La estructura de los datos del modelo relacional se basa, pues, en el conceptode relacin.

    2.1. Visin informal de una relacin

    En primer lugar, presentaremos el concepto de relacin de manera informal.Se puede obtener una buena idea intuitiva de lo que es una relacin si la vi-sualizamos como una tabla o un fichero. En la figura 1 se muestra la visuali-zacin tabular de una relacin que contiene datos de empleados. Cada fila dela tabla contiene una coleccin de valores de datos relacionados entre s; ennuestro ejemplo, son los datos correspondientes a un mismo empleado. Latabla tiene un nombre (EMPLEADOS) y tambin tiene un nombre cada una desus columnas (DNI, nombre, apellido y sueldo). El nombre de la tabla y los delas columnas ayudan a entender el significado de los valores que contiene latabla. Cada columna contiene valores de un cierto dominio; por ejemplo, lacolumna DNI contiene valores del dominio nmeros_DNI.

    Figura 1.Conjunto de relaciones

    Una BD relacional consta deun conjunto de relaciones, ca-da una de las cuales se pue-de visualizar de este modo tansencillo. La estructura de losdatos del modelo relacional re-sulta fcil de entender para elusuario.

  • FUOC PID_00171668 10 El modelo relacional y el lgebra relacional

    Si definimos las relaciones de forma ms precisa, nos daremos cuenta de quepresentan algunas caractersticas importantes que, en la visin superficial quehemos presentado, quedan ocultas. Estas caractersticas son las que motivanque el concepto de relacin sea totalmente diferente del de fichero, a pesar deque, a primera vista, relaciones y ficheros puedan parecer similares.

    2.2. Visin formal de una relacin

    A continuacin definimos formalmente las relaciones y otros conceptos queestn vinculados a ellas, como por ejemplo dominio, esquema de relacin, etc.

    Un dominioD es un conjunto de valores atmicos. Por lo que respectaal modelo relacional, atmico significa indivisible; es decir, que por muycomplejo o largo que sea un valor atmico, no tiene una estructuracininterna para un SGBD relacional.

    Los dominios pueden ser de dos tipos:

    1)Dominiospredefinidos, que corresponde a los tipos de datos que normal-mente proporcionan los lenguajes de BD, como por ejemplo los enteros, lascadenas de caracteres, los reales, etc.

    2)Dominiosdefinidosporelusuario, que pueden ser ms especficos. Todadefinicin de un dominio debe constar, como mnimo, del nombre del domi-nio y de la descripcin de los valores que forman parte de ste.

    Un relacin se compone del esquema (o intensin de la relacin) y dela extensin.

    Si consideramos la representacin tabular anterior (figura 1), el esquema co-rrespondera a la cabecera de la tabla y la extensin correspondera al cuerpo:

    Figura 2.

    Dominio definido por elusuario

    Por ejemplo, el usuario pue-de definir un dominio para lasedades de los empleados quese denomine dom_edad y quecontenga los valores enterosque estn entre 16 y 65.

  • FUOC PID_00171668 11 El modelo relacional y el lgebra relacional

    El esquemadelarelacin consiste en un nombre de relacin R y unconjunto de atributos {A1, A2, ..., An}.

    Nombre y conjunto de atributos de la relacin EMPLEADOS

    Si tomamos como ejemplo la figura 1, el nombre de la relacin es EMPLEADOS y el con-junto de atributos es {DNI, nombre, apellido, sueldo}.

    Tomaremos la convencin de denotar el esquema de la relacin de la formasiguiente: R(A1, A2, ..., An), donde R es el nombre la relacin y A1, A2, ..., Anes una ordenacin cualquiera de los atributos que pertenecen al conjunto {A1,A2, ..., An}.

    Denotacin del esquema de la relacin EMPLEADOS

    El esquema de la relacin de la figura 1 se podra denotar, por ejemplo, como EMPLEADOS(DNI, nombre, apellido, sueldo), o tambin, EMPLEADOS (nombre, apellido, DNI, sueldo),porque cualquier ordenacin de sus atributos se considera vlida para denotar el esquemade una relacin.

    Un atributoAi es el nombre del papel que ejerce un dominio D en unesquema de relacin. D es el dominiodeAi y se denota como dominio(Ai).

    Dominio del atributo DNI

    Segn la figura 1, el atributo DNI corresponde al papel que ejerce el dominio nmeros_DNIen el esquema de la relacin EMPLEADOS y, entonces, dominio(DNI) = nmeros_DNI.

    Conviene observar que cada atributo es nico en un esquema de relacin,porque no tiene sentido que un mismo dominio ejerza dos veces el mismopapel en un mismo esquema. Por consiguiente, no puede ocurrir que en unesquema de relacin haya dos atributos con el mismo nombre. En cambio,s que se puede repetir un nombre de atributo en relaciones diferentes. Losdominios de los atributos, por el contrario, no deben ser necesariamente todosdiferentes en una relacin.

    Ejemplo de atributos diferentes con el mismo dominio

    Si tomamos como ejemplo el esquema de relacin PERSONAS(DNI, nombre, apellido,tel_casa, tel_trabajo), los atributos tel_casa y tel_trabajo pueden tener el mismo dominio:dominio(tel_casa) = telfono y dominio(tel_trabajo) = telfono.

    En este caso, el dominio telfono ejerce dos papeles diferentes en el esquema de relacin:el de indicar el telfono particular de una persona y el de indicar el del trabajo.

  • FUOC PID_00171668 12 El modelo relacional y el lgebra relacional

    La extensindelarelacindeesquemaR(A1,A2,...,An) es un con-junto de tuplas ti (i = 1, 2, ..., m), donde cada tupla ti es, a su vez unconjunto de pares ti = {, ... >An:vin>} y, para cada par, se cumple que vij es un valor de dominio(Aj), o bien un valorespecial que denominaremos nulo.

    Para simplificar, tomaremos la convencin de referirnos a una tupla ti ={, , ..., } que pertenece a la extensin del esquema de-notado como R(A1, A2, ..., An), de la forma siguiente: ti = .

    Si denotamos el esquema de la relacin representada en la figura 1 comoEMPLEADOS(DNI, nombre, apellido, sueldo), el conjunto de tuplas de su exten-sin ser el de la figura siguiente:

    Figura 3.

    Esta figura nos muestra la extensin de EMPLEADOS en forma de conjunto, mientras quelas figuras anteriores nos la mostraban en forma de filas de una tabla. La representacintabular es ms cmoda, pero no refleja la definicin de extensin con tanta exactitud.

    Si en una tupla ti= , el valor vij es un valornulo, entonces elvalor del atributo Aj es desconocido para la tupla ti de la relacin, o bien noes aplicable a esta tupla.

    Ejemplo de valor nulo

    Podramos tener un atributo tel_casa en la relacin EMPLEADOS y se podra dar el casode que un empleado no tuviese telfono en su casa, o bien que lo tuviese, pero no seconociese su nmero. En las dos situaciones, el valor del atributo tel_casa para la tuplacorrespondiente al empleado sera el valor nulo.

    El gradodeunarelacin es el nmero de atributos que pertenecen asu esquema.

    Tablas, columnas y filas

    Algunos autores denominantablas, columnas y filas a las re-laciones, los atributos y las tu-plas, respectivamente.

  • FUOC PID_00171668 13 El modelo relacional y el lgebra relacional

    Grado de la relacin EMPLEADOS

    El grado de la relacin de esquema EMPLEADOS(DNI, nombre, apellido, sueldo), es 4.

    La cardinalidad de una relacin es el nmero de tuplas que pertenecena su extensin.

    Cardinalidad de la relacin EMPLEADOS

    Observando la figura 3 se deduce que la cardinalidad de la relacin EMPLEADOS es 3.

    2.3. Diferencias entre relaciones y ficheros

    A primera vista, relaciones y ficheros resultan similares. Los registros y loscampos que forman los ficheros se parecen a las tuplas y a los atributos de lasrelaciones, respectivamente.

    A pesar de esta similitud superficial, la visin formal de relacin que hemospresentado establece algunas caractersticas de las relaciones que las hacen di-ferentes de los ficheros clsicos. A continuacin describimos estas caracters-ticas:

    1)Atomicidaddelosvaloresdelosatributos: los valores de los atributos deuna relacin deben ser atmicos; es decir, no deben tener estructura interna.Esta caracterstica proviene del hecho de que los atributos siempre deben to-mar un valor de su dominio o bien un valor nulo, y de que se ha establecidoque los valores de los dominios deben ser atmicos en el modelo relacional.

    El objetivo de la atomicidad de los valores es dar simplicidad y uniformidadal modelo relacional.

    2)No-repeticindelastuplas: en un fichero clsico puede ocurrir que dosde los registros sean exactamente iguales; es decir, que contengan los mismosdatos. En el caso del modelo relacional, en cambio, no es posible que unarelacin contenga tuplas repetidas. Esta caracterstica se deduce de la mismadefinicin de la extensin de una relacin. La extensin es un conjunto detuplas y, en un conjunto, no puede haber elementos repetidos.

    3)No-ordenacindelastuplas: de la definicin de la extensin de una rela-cin como un conjunto de tuplas se deduce tambin que estas tuplas no esta-rn ordenadas, teniendo en cuenta que no es posible que haya una ordenacinentre los elementos de un conjunto.

  • FUOC PID_00171668 14 El modelo relacional y el lgebra relacional

    La finalidad de esta caracterstica es conseguir que, mediante el modelo re-lacional, se puedan representar los hechos en un nivel abstracto que sea in-dependiente de su estructura fsica de implementacin. Ms concretamente,aunque los SGBD relacionales deban proporcionar una implementacin fsicaque almacenar las tuplas de las relaciones en un orden concreto, esta orde-nacin no es visible si nos situamos en el nivel conceptual.

    Ejemplo de no-ordenacin de las tuplas

    En una BD relacional, por ejemplo, no tiene sentido consultar la primera tupla de larelacin EMPLEADOS.

    Ved tambin

    El concepto de extensin deuna relacin se ha explicadoen el subapartado 2.2. de estemdulo didctico.

    4)No-ordenacindelosatributos: el esquema de una relacin consta de unnombre de relacin R y un conjunto de atributos {A1, A2, ..., An}. As pues,no hay un orden entre los atributos de un esquema de relacin, teniendo encuenta que estos atributos forman un conjunto.

    Como en el caso anterior, el objetivo de esta caracterstica es representar loshechos en un nivel abstracto, independientemente de su implementacin f-sica.

    Ejemplo de no-ordenacin de los atributos

    El esquema de relacin EMPLEADOS(DNI, nombre, apellido, sueldo) denota el mismo es-quema de relacin que EMPLEADOS(nombre, apellido, DNI, sueldo).

    2.4. Clave candidata, clave primaria y clave alternativa de lasrelaciones

    Ved tambin

    El concepto de esquema de unarelacin se ha explicado en elsubapartado 2.2. de este m-dulo didctico.

    Toda la informacin que contiene una BD debe poderse identificar de algunaforma. En el caso particular de las BD que siguen el modelo relacional, paraidentificar los datos que la BD contiene, se pueden utilizar las claves candi-datas de las relaciones. A continuacin definimos qu se entiende por clavecandidata, clave primaria y clave alternativa de una relacin. Para hacerlo, sernecesario definir el concepto de superclave.

    Una superclavedeunarelacindeesquemaR(A1,A2,...,An) es unsubconjunto de los atributos del esquema tal que no puede haber dostuplas en la extensin de la relacin que tengan la misma combinacinde valores para los atributos del subconjunto.

    Observad que toda relacin tiene, por lo menos, una superclave, que es la formada portodos los atributos de su esquema. Esto se debe a la propiedad que cumple toda relacinde no tener tuplas repetidas.

    En el ejemplo EMPLEADOS (DNI, NSS, nombre, apellido, telfono) esta superclave sera:{DNI, NSS, nombre, apellido, telfono}.

    Una superclave, por lo tanto, nos permite identificar todas las tuplas que con-tiene la relacin.

    Relacin

    Por ejemplo, si se almacena in-formacin sobre los empleadosde una empresa, es preciso te-ner la posibilidad de distinguirqu datos corresponden a ca-da uno de los diferentes em-pleados.

  • FUOC PID_00171668 15 El modelo relacional y el lgebra relacional

    Algunas superclaves de la relacin EMPLEADOS

    En la relacin de esquema EMPLEADOS(DNI, NSS, nombre, apellido, telfono), algunas delas superclaves de la relacin seran los siguientes subconjuntos de atributos: {DNI, NSS,nombre, apellido, telfono}, {DNI, apellido}, {DNI} y {NSS}.

    Una clavecandidatadeunarelacin es una superclave C de la relacinque cumple que ningn subconjunto propio de C es superclave.

    Es decir, C cumple que la eliminacin de cualquiera de sus atributos da unconjunto de atributos que no es superclave de la relacin. Intuitivamente, unaclave candidata permite identificar cualquier tupla de una relacin, de maneraque no sobre ningn atributo para hacer la identificacin.

    Claves candidatas de EMPLEADOS

    En la relacin de esquema EMPLEADOS(DNI, NSS, nombre, apellido, telfono), slo hay dosclaves candidatas: {DNI} y {NSS}.

    Habitualmente, una de las claves candidatas de una relacin se designaclave primaria de la relacin. La claveprimaria es la clave candidatacuyos valores se utilizarn para identificar las tuplas de la relacin.

    Relacin con una clave candidata

    Si una relacin slo tiene una clave candidata, entonces esta clave candidata debe sertambin su clave primaria. Ya que todas las relaciones tienen como mnimo una clavecandidata, podemos garantizar que, para toda relacin, ser posible designar una claveprimaria.

    El diseador de la BD es quien elige la clave primaria de entre las claves can-didatas.

    Las claves candidatas no elegidas como primaria se denominan clavesalternativas.

    Utilizaremos la convencin de subrayar los atributos que forman parte de laclave primaria en el esquema de la relacin. As pues, R(A1, A2, ..., Ai, ..., An)indica que los atributos A1, A2, ..., Aiforman la clave primaria de R.

    Eleccin de la clave primaria de EMPLEADOS

    En la relacin de esquema EMPLEADOS(DNI, NSS, nombre, apellido, telfono), donde haydos claves candidatas, {DNI} y {NSS}, se puede elegir como clave primaria {DNI}. Lo in-dicaremos subrayando el atributo DNI en el esquema de la relacin EMPLEADOS(DNI,NSS, nombre, apellido, telfono). En este caso, la clave {NSS} ser una clave alternativa deEMPLEADOS.

    Es posible que una clave candidata o una clave primaria conste de ms de unatributo.

    Nota

    Notad que puesto que toda re-lacin tiene por lo menos unasuperclave, podemos garanti-zar que toda relacin tiene co-mo mnimo una clave candida-ta.

  • FUOC PID_00171668 16 El modelo relacional y el lgebra relacional

    Clave primaria de la relacin DESPACHOS

    En la relacin de esquema DESPACHOS(edificio, nmero, superficie), la clave primaria estformada por los atributos edificio y nmero. En este caso, podr ocurrir que dos despachosdiferentes estn en el mismo edificio, o bien que tengan el mismo nmero, pero nuncapasar que tengan la misma combinacin de valores para edificio y nmero.

    2.5. Claves forneas de las relaciones

    Hasta ahora hemos estudiado las relaciones de forma individual, pero debe-mos tener en cuenta que una BD relacional normalmente contiene ms deuna relacin, para poder representar distintos tipos de hechos que suceden enel mundo real. Por ejemplo, podramos tener una pequea BD que contuviesedos relaciones: una denominada EMPLEADOS, que almacenara datos de losempleados de una empresa, y otra con el nombre DESPACHOS, que almacena-ra los datos de los despachos que tiene la empresa.

    Debemos considerar tambin que entre los distintos hechos que se dan enel mundo real pueden existir lazos o vnculos. Por ejemplo, los empleadosque trabajan para una empresa pueden estar vinculados con los despachos dela empresa, porque a cada empleado se le asigna un despacho concreto paratrabajar.

    En el modelo relacional, para reflejar este tipo de vnculos, tenemos la posibi-lidad de expresar conexiones entre las distintas tuplas de las relaciones. Porejemplo, en la BD anterior, que tiene las relaciones EMPLEADOS y DESPACHOS,puede ser necesario conectar tuplas de EMPLEADOS con tuplas de DESPACHOSpara indicar qu despacho tiene asignado cada empleado.

    En ocasiones, incluso puede ser necesario reflejar lazos entre tuplas que per-tenecen a una misma relacin. Por ejemplo, en la misma BD anterior puedeser necesario conectar determinadas tuplas de EMPLEADOS con otras tuplasde EMPLEADOS para indicar, para cada empleado, quin acta como su jefe.

    El mecanismo que proporcionan las BD relacionales para conectar tuplas sonlas claves forneas de las relaciones. Las clavesforneas permiten establecerconexiones entre las tuplas de las relaciones. Para hacer la conexin, una clavefornea tiene el conjunto de atributos de una relacin que referencian la claveprimaria de otra relacin (o incluso de la misma relacin).

    Claves forneas de la relacin EMPLEADOS

    En la figura siguiente, la relacin EMPLEADOS(DNI, nombre, apellido, telfono, DNI_jefe,edificio_desp, nmero_desp), tiene una clave fornea formada por los atributos edificio_despy nmero_desp que se refiere a la clave primaria de la relacin DESPACHOS(edificio, nmero,superficie). Esta clave fornea indica, para cada empleado, el despacho donde trabaja.Adems, el atributo DNI_jefe es otra clave fornea que referencia la clave primaria de lamisma relacin EMPLEADOS, e indica, para cada empleado, quien es su jefe.

  • FUOC PID_00171668 17 El modelo relacional y el lgebra relacional

    Las claves forneas tienen por objetivo establecer una conexin con la claveprimaria que referencian. Por lo tanto, los valores de una clave fornea debenestar presentes en la clave primaria correspondiente, o bien deben ser valoresnulos. En caso contrario, la clave fornea representara una referencia o cone-xin incorrecta.

    Ejemplo

    En la relacin de esquema EMPLEADOS(DNI, nombre, apellido, DNI_jefe, edificio_desp,nmero_desp), la clave fornea {edificio_desp, nmero_desp} referencia la relacinDESPACHOS(edificio, nmero, superficie). De este modo, se cumple que todos los valoresque no son nulos de los atributos edificio_desp y nmero_desp son valores que existen paralos atributos edificio y nmero de DESPACHOS, tal y como se puede ver a continuacin:

    Relacin DESPACHOS:

    DESPACHOS

    edificio nmero superficie

    Marina 120 10

    Marina 122 15

    Marina 230 20

    Diagonal 120 10

    Relacin EMPLEADOS

    EMPLEADOS

    DNI nombre apellido DNI_jefe edificio_desp nmero_desp

    40.444.255 Juan Garca NULL Marina 120

    33.567.711 Marta Roca 40.444.255 Marina 120

    55.898.425 Carlos Buenda 40.444.255 Diagonal 120

    77.232.144 Elena Pla 40.444.255 NULL NULL

    Supongamos que hubiese un empleado con los valores . Puesto que no hay ningn despacho con los valores Pars y 400 paraedificio y nmero, la tupla de este empleado hace una referencia incorrecta; es decir, indicaun despacho para el empleado que, de hecho, no existe.

    Es preciso sealar que en la relacin EMPLEADOS hay otra clave fornea, {DNI_jefe}, quereferencia la misma relacin EMPLEADOS, y entonces se cumple que todos los valoresque no son nulos del atributo DNI_jefe son valores que existen para el atributo DNI dela misma relacin EMPLEADOS.

  • FUOC PID_00171668 18 El modelo relacional y el lgebra relacional

    A continuacin estableceremos de forma ms precisa qu se entiende por clavefornea.

    Una claveforneadeunarelacinR es un subconjunto de atributosdel esquema de la relacin, que denominamos CF y que cumple las si-guientes condiciones:

    1) Existe una relacin S (S no debe ser necesariamente diferente de R)que tiene por clave primaria CP.

    2) Se cumple que, para toda tupla t de la extensin de R, los valores paraCF de t son valores nulos o bien valores que coinciden con los valorespara CP de alguna tupla s de S.

    Y entonces, se dice que la clave fornea CF referencia la clave primariaCP de la relacin S, y tambin que la clave fornea CF referencia la re-lacin S.

    Conviene subrayar que, tal y como ya hemos mencionado, el modelo relacional permiterepresentar toda la informacin mediante valores explcitos que contienen las relaciones,y no le hace falta nada ms. De este modo, las conexiones entre tuplas de las relacionesse expresan con los valores explcitos de las claves forneas de las relaciones, y no sonnecesarios conceptos adicionales (por ejemplo, apuntadores entre tuplas), para establecerestas conexiones. Esta caracterstica da simplicidad y uniformidad al modelo.

    De la nocin que hemos dado de clave fornea se pueden extraer varias con-secuencias:

    1) Si una clave fornea CF referencia una clave primaria CP, el nmero deatributos de CF y de CP debe coincidir.

    Ejemplo de coincidencia del nmero de atributos de CF y CP

    En el ejemplo anterior, tanto la clave fornea {edificio_desp, nmero_desp} como la claveprimaria que referencia {edificio, nmero} tienen dos atributos. Si no sucediese as, no seraposible que los valores de CF existieran en CP.

    2) Por el mismo motivo, se puede establecer una correspondencia (en concre-to, una biyeccin) entre los atributos de la clave fornea y los atributos de laclave primaria que referencia.

    Ejemplo de correspondencia entre los atributos de CF y los de CP

    En el ejemplo anterior, a edificio_desp le corresponde el atributo edificio, y a nmero_desple corresponde el atributo nmero.

    3) Tambin se deduce de la nocin de clave fornea que los dominios de susatributos deben coincidir con los dominios de los atributos correspondientesa la clave primaria que referencia. Esta coincidencia de dominios hace que seaposible que los valores de la clave fornea coincidan con valores de la claveprimaria referenciada.

  • FUOC PID_00171668 19 El modelo relacional y el lgebra relacional

    Ejemplo de coincidencia de los dominios

    En el ejemplo anterior, se debe cumplir que dominio(edificio_desp) = dominio(edificio) ytambin que dominio(nmero_desp) = dominio(nmero).

    Observad que, de hecho, esta condicin se podra relajar, y se podra permitirque los dominios no fuesen exactamente iguales, sino que slo fuesen, y dealguna forma que convendra precisar, dominios compatibles. Para simpli-ficarlo, nosotros supondremos que los dominios deben ser iguales en todos loscasos en que, segn Date (2001), se aceptaran dominios compatibles.

    Ejemplo de atributo que forma parte de la clave primaria y de una clavefornea

    Puede suceder que algn atributo de una relacin forme parte tanto de la clave prima-ria como de una clave fornea de la relacin. Esto se da en las siguientes relaciones:EDIFICIOS(nombre_edificio, direccin), y DESPACHOS(edificio, nmero, superficie), donde{edificio} es una clave fornea que referencia EDIFICIOS.

    En este ejemplo, el atributo edificio forma parte tanto de la clave primaria como de laclave fornea de la relacin DESPACHOS.

    2.6. Creacin de las relaciones de una base de datos

    Hemos visto que una BD relacional consta de varias relaciones. Cada relacintiene varios atributos que toman valores de unos ciertos dominios; tambintiene una clave primaria y puede tener una o ms claves forneas. Los lengua-jesdelosSGBDrelacionales deben proporcionar la forma de definir todosestos elementos para crear una BD.

    Ms adelante se ver con detalle la sintaxis y el significado de las sentenciasde definicin de la BD para el caso concreto del lenguaje SQL.

    Lectura recomendada

    Encontraris explicacionesdetalladas sobre la coinciden-cia de dominios en la obra si-guiente:C.J.Date (2001). Introduc-cin a los sistemas de bases dedatos (7. ed., cap. 19). Ma-drid: Prentice-Hall.

  • FUOC PID_00171668 20 El modelo relacional y el lgebra relacional

    3. Operaciones del modelo relacional

    Las operaciones del modelo relacional deben permitir manipular datos alma-cenados en una BD relacional y, por lo tanto, estructurados en forma de rela-ciones. La manipulacin de datos incluye bsicamente dos aspectos: la actua-lizacin y la consulta.

    La actualizacindelosdatos consiste en hacer que los cambios que seproducen en la realidad queden reflejados en las relaciones de la BD.

    Ejemplo de actualizacin

    Si una BD contiene, por ejemplo, informacin de los empleados de una empresa, y laempresa contrata a un empleado, ser necesario reflejar este cambio aadiendo los datosdel nuevo empleado a la BD.

    Existen tres operaciones bsicas de actualizacin:

    a)Insercin, que sirve para aadir una o ms tuplas a una relacin.

    b)Borrado, que sirve para eliminar una o ms tuplas de una relacin.

    c)Modificacin, que sirve para alterar los valores que tienen una o ms tuplasde una relacin para uno o ms de sus atributos.

    La consultadelosdatos consiste en la obtencin de datos deduciblesa partir de las relaciones que contiene la BD.

    Ejemplo de consulta

    Si una BD contiene, por ejemplo, informacin de los empleados de una empresa, puedeinteresar consultar el nombre y apellido de todos los empleados que trabajan en un des-pacho situado en un edificio que tiene por nombre Marina.

    La obtencin de los datos que responden a una consulta puede requerir elanlisis y la extraccin de datos de una o ms de las relaciones que mantienela BD.

    Segn la forma como se especifican las consultas, podemos clasificar los len-guajes relacionales en dos tipos:

    1)Lenguajesbasadosenellgebrarelacional. El lgebra relacional se inspiraen la teora de conjuntos. Si queremos especificar una consulta, es necesarioseguir uno o ms pasos que sirven para ir construyendo, mediante operacionesdel lgebra relacional, una nueva relacin que contenga los datos que respon-

  • FUOC PID_00171668 21 El modelo relacional y el lgebra relacional

    den a la consulta a partir de las relaciones almacenadas. Los lenguajes basadosen el lgebra relacional son lenguajesprocedimentales, ya que los pasos queforman la consulta describen un procedimiento.

    2)Lenguajesbasadosenel clculo relacional. El clculo relacional tienesu fundamento terico en el clculo de predicados de la lgica matemtica.Proporciona una notacin que permite formular la definicin de la relacindonde estn los datos que responden la consulta en trminos de las relacionesalmacenadas. Esta definicin no describe un procedimiento; por lo tanto, sedice que los lenguajes basados en el clculo relacional son lenguajesdeclara-tivos (no procedimentales).

    El lenguajeSQL, en las sentencias de consulta, combina construcciones dellgebra relacional y del clculo relacional con un predominio de las construc-ciones del clculo. Este predominio determina que SQL sea un lenguaje decla-rativo.

    El estudiodellgebrarelacional presenta un inters especial, pues ayuda aentender qu servicios de consulta debe proporcionar un lenguaje relacional,facilita la comprensin de algunas de las construcciones del lenguaje SQL ytambin sirve de base para el tratamiento de las consultas que efectan losSGBD internamente. Este ltimo tema queda fuera del mbito de la presenteasignatura, pero es necesario para estudios ms avanzados sobre BD.

    Ved tambin

    El lgebra relacional se explicaen el apartado 5 de este m-dulo didctico.

  • FUOC PID_00171668 22 El modelo relacional y el lgebra relacional

    4. Reglas de integridad

    Una BD contiene unos datos que, en cada momento, deben reflejar la realidado, ms concretamente, la situacin de una porcin del mundo real. En el casode las BD relacionales, esto significa que la extensin de las relaciones (es decir,las tuplas que contienen las relaciones) deben tener valores que reflejen larealidad correctamente.

    Suele ser bastante frecuente que determinadas configuraciones de valores paralas tuplas de las relaciones no tengan sentido, porque no representan ningunasituacin posible del mundo real.

    Un sueldo negativo

    En la relacin de esquema EMPLEADOS(DNI, nombre, apellido, sueldo), una tupla que tieneun valor de 1.000 para el sueldo probablemente no tiene sentido, porque los sueldosno pueden ser negativos.

    Denominamos integridad la propiedad de los datos de corresponder arepresentaciones plausibles del mundo real.

    Como es evidente, para que los datos sean ntegros, es preciso que cumplanvarias condiciones.

    El hecho de que los sueldos no puedan ser negativos es una condicin que se deberacumplir en la relacin EMPLEADOS.

    En general, las condiciones que garantizan la integridad de los datos puedenser de dos tipos:

    1) Las restricciones(oreglas)deintegridaddeusuario son condiciones es-pecficas de una BD concreta; es decir, son las que se deben cumplir en unaBD particular con unos usuarios concretos, pero que no son necesariamenterelevantes en otra BD.

    Restriccin de integridad de usuario en EMPLEADOS

    ste sera el caso de la condicin anterior, segn la cual los sueldos no podan ser negati-vos. Observad que esta condicin era necesaria en la BD concreta de este ejemplo porqueapareca el atributo sueldo, al que se quera dar un significado; sin embargo, podra no sernecesaria en otra BD diferente donde, por ejemplo, no hubiese sueldos.

    2) Las restricciones(oreglas)deintegridaddemodelo, en cambio, son con-diciones ms generales, propias de un modelo de datos, y se deben cumplir entoda BD que siga dicho modelo.

  • FUOC PID_00171668 23 El modelo relacional y el lgebra relacional

    Ejemplo de regla de integridad del modelo de datos relacional

    En el caso del modelo de datos relacional, habr una regla de integridad para garantizarque los valores de una clave primaria de una relacin no se repitan en tuplas diferentesde la relacin. Toda BD relacional debe cumplir esta regla que, por lo tanto, es una reglade integridad del modelo.

    Los SGBD deben proporcionar la forma de definir las restricciones de integri-dad de usuario de una BD; una vez definidas, deben velar por su cumplimiento.

    Las reglas de integridad del modelo, en cambio, no se deben definir para cadaBD concreta, porque se consideran preestablecidas para todas las BD de unmodelo. Un SGBD de un modelo determinado debe velar por el cumplimientode las reglas de integridad preestablecidas por su modelo.

    A continuacin estudiaremos con detalle las reglasdeintegridaddelmodelorelacional, reglas que todo SGBD relacional debe obligar a cumplir.

    4.1. Regla de integridad de unicidad de la clave primaria

    La regla de integridad de unicidad est relacionada con la definicin de claveprimaria. Concretamente, establece que toda clave primaria que se elija parauna relacin no debe tener valores repetidos.

    Ejemplo

    Tenemos la siguiente relacin:

    DESPACHOS

    edificio nmero superficie

    Marina 120 10

    Marina 122 15

    Marina 230 20

    Diagonal 120 10

    En esta relacin, dado que la clave primaria est formada por edificio y nmero, no hayningn despacho que repita tanto edificio como nmero de otro despacho. Sin embargo,s se repiten valores de edificio (por ejemplo, Marina); y tambin se repiten valores denmero (120). A pesar de ello, el edificio y el nmero no se repiten nunca al mismo tiempo.

    A continuacin explicamos esta regla de forma ms precisa.

    La regladeintegridaddeunicidaddelaclaveprimaria establece quesi el conjunto de atributos CP es la clave primaria de una relacin R,entonces la extensin de R no puede tener en ningn momento dostuplas con la misma combinacin de valores para los atributos de CP.

    Ved tambin

    Es preciso destacar que el mis-mo concepto de clave prima-ria implica esta condicin. Elconcepto de clave primaria seha explicado en el subaparta-do 2.4. de este mdulo didc-tico.

  • FUOC PID_00171668 24 El modelo relacional y el lgebra relacional

    Un SGBD relacional deber garantizar el cumplimiento de esta regla de inte-gridad en todas las inserciones, as como en todas las modificaciones que afec-ten a atributos que pertenecen a la clave primaria de la relacin.

    Ejemplo

    Tenemos la siguiente relacin:

    DESPACHOS

    edificio nmero superficie

    Marina 120 10

    Marina 122 15

    Marina 230 20

    Diagonal 120 10

    En esta relacin no se debera poder insertar la tupla , ni modificarla tupla , de modo que pasara a ser .

    4.2. Regla de integridad de entidad de la clave primaria

    La regla de integridad de entidad de la clave primaria dispone que los atributosde la clave primaria de una relacin no pueden tener valores nulos.

    Ejemplo

    Tenemos la siguiente relacin:

    DESPACHOS

    edificio nmero superficie

    Marina 120 10

    Marina 122 15

    Marina 230 20

    Diagonal 120 10

    En esta relacin, puesto que la clave primaria est formada por edificio y nmero, no hayningn despacho que tenga un valor nulo para edificio, ni tampoco para nmero.

    Esta regla es necesaria para que los valores de las claves primarias puedan iden-tificar las tuplas individuales de las relaciones. Si las claves primarias tuviesenvalores nulos, es posible que algunas tuplas no se pudieran distinguir.

  • FUOC PID_00171668 25 El modelo relacional y el lgebra relacional

    Ejemplo de clave primaria incorrecta con valores nulos

    En el ejemplo anterior, si un despacho tuviese un valor nulo para edificio porque en unmomento dado el nombre de este edificio no se conoce, por ejemplo ,la clave primaria no nos permitira distinguirlo del despacho ni deldespacho . No podramos estar seguros de que el valor desconocidode edificio no es ni Marina ni Diagonal.

    A continuacin definimos esta regla de forma ms precisa.

    La regladeintegridaddeentidaddelaclaveprimaria establece quesi el conjunto de atributos CP es la clave primaria de una relacin R, laextensin de R no puede tener ninguna tupla con algn valor nulo paraalguno de los atributos de CP.

    Un SGBD relacional tendr que garantizar el cumplimiento de esta regla deintegridad en todas las inserciones y, tambin, en todas las modificaciones queafecten a atributos que pertenecen a la clave primaria de la relacin.

    Ejemplo

    En la relacin DESPACHOS anterior, no se debera insertar la tupla .Tampoco debera ser posible modificar la tupla de modo que pasaraa ser .

    4.3. Regla de integridad referencial

    La regla de integridad referencial est relacionada con el concepto de clavefornea. Concretamente, determina que todos los valores que toma una clavefornea deben ser valores nulos o valores que existen en la clave primaria quereferencia.

    Ejemplo

    Si tenemos las siguientes relaciones:

    Relacin DESPACHOS:

    DESPACHOS

    edificio nmero superficie

    Marina 120 10

    Marina 122 15

    Marina 230 20

    Diagonal 120 10

    Ved tambin

    Observad que todo lo que im-pone la regla de integridad re-ferencial viene implicado porla misma nocin de clave for-nea que se ha explicado en elsubapartado 2.5 de este m-dulo.

  • FUOC PID_00171668 26 El modelo relacional y el lgebra relacional

    Relacin EMPLEADOS:

    EMPLEADOS

    DNI nombre apellido edificio_desp nmero_desp

    40.444.255 Juan Garca Marina 120

    33.567.711 Marta Roca Marina 120

    55.898.425 Carlos Buenda Diagonal 120

    77.232.144 Elena Pla NULL NULL

    donde edificio_desp y nmero_desp de la relacin EMPLEADOS forman una clave for-nea que referencia la relacin DESPACHOS. Debe ocurrir que los valores no nulos deedificio_desp y nmero_desp de la relacin EMPLEADOS estn en la relacin DESPACHOScomo valores de edificio y nmero. Por ejemplo, el empleado tiene el valor Marina para edificio_desp, y el valor 120 para nmero_desp, demodo que en la relacin DESPACHOS hay un despacho con valor Marina para edificio ycon valor 120 para nmero.

    La necesidad de la regla de integridad relacional proviene del hecho de quelas claves forneas tienen por objetivo establecer una conexin con la claveprimaria que referencian. Si un valor de una clave fornea no estuviese pre-sente en la clave primaria correspondiente, representara una referencia o unaconexin incorrecta.

    Referencia incorrecta

    Supongamos que en el ejemplo anterior hubiese un empleado con los valores. Ya que no hay un despacho con los valoresValencia y 325 para edificio y nmero, la tupla de este empleado hace una referencia in-correcta; es decir, indica un despacho para el empleado que, de hecho, no existe.

    A continuacin explicamos la regla de modo ms preciso.

    La regladeintegridadreferencial establece que si el conjunto de atri-butos CF es una clave fornea de una relacin R que referencia una rela-cin S (no necesariamente diferente de R), que tiene por clave primariaCP, entonces, para toda tupla t de la extensin de R, los valores parael conjunto de atributos CF de t son valores nulos, o bien valores quecoinciden con los valores para CP de alguna tupla s de S.

    En el caso de que una tupla t de la extensin de R tenga valores paraCF que coincidan con los valores para CP de una tupla s de S, decimosque t es una tupla que referencia s y que s es una tupla que tiene unaclave primaria referenciada por t.

    Un SGBD relacional tendr que hacer cumplir esta regla de integridad. Deberefectuar comprobaciones cuando se produzcan las siguientes operaciones:

  • FUOC PID_00171668 27 El modelo relacional y el lgebra relacional

    a) Inserciones en una relacin que tenga una clave fornea.

    b) Modificaciones que afecten a atributos que pertenecen a la clave forneade una relacin.

    c) Borrados en relaciones referenciadas por otras relaciones.

    d) Modificaciones que afecten a atributos que pertenecen a la clave primariade una relacin referenciada por otra relacin.

    Ejemplo

    Retomamos el ejemplo anterior, donde edificio_desp y nmero_desp de la relacin EMPLEA-DOS forman una clave fornea que referencia la relacin DESPACHOS:

    Relacin DESPACHOS:

    DESPACHOS

    edificio nmero superficie

    Marina 120 10

    Marina 122 15

    Marina 230 20

    Diagonal 120 10

    Relacin EMPLEADOS:

    EMPLEADOS

    DNI nombre apellido edificio_desp nmero_desp

    40.444.255 Juan Garca Marina 120

    33.567.711 Marta Roca Marina 120

    55.898.425 Carlos Buenda Diagonal 120

    77.232.144 Elena Pla NULL NULL

    Las siguientes operaciones provocaran el incumplimiento de la regla de integridad refe-rencial:

    Insercin de en EMPLEADOS. Modificacin de de EMPLEADOS por

    . Borrado de de DESPACHOS. Modificacin de de DESPACHOS por .

    Un SGBD relacional debe procurar que se cumplan las reglas de integridaddel modelo. Una forma habitual de mantener estas reglas consiste en rechazartoda operacin de actualizacin que deje la BD en un estado en el que algunaregla no se cumpla. En algunos casos, sin embargo, el SGBD tiene la posibilidad

  • FUOC PID_00171668 28 El modelo relacional y el lgebra relacional

    de aceptar la operacin y efectuar acciones adicionales compensatorias, demodo que el estado que se obtenga satisfaga las reglas de integridad, a pesarde haber ejecutado la operacin.

    Esta ltima poltica se puede aplicar en las siguientes operaciones de actuali-zacin que violaran la regla de integridad:

    a) Borrado de una tupla que tiene una clave primaria referenciada.

    b) Modificacin de los valores de los atributos de la clave primaria de una tuplaque tiene una clave primaria referenciada.

    En los casos anteriores, algunas de las polticas que se podrn aplicar sern lassiguientes: restriccin, actualizacinencascada y anulacin. A continua-cin explicamos el significado de las tres posibilidades mencionadas.

    4.3.1. Restriccin

    La poltica de restriccin consiste en no aceptar la operacin de actualizacin.

    Ms concretamente, la restriccinencasodeborrado, consiste en nopermitir borrar una tupla si tiene una clave primaria referenciada poralguna clave fornea.

    De forma similar, la restriccinencasodemodificacin consiste enno permitir modificar ningn atributo de la clave primaria de una tuplasi tiene una clave primaria referenciada por alguna clave fornea.

    Ejemplo de aplicacin de la restriccin

    Supongamos que tenemos las siguientes relaciones:

    Relacin CLIENTES:

    CLIENTES

    num_cliente ...

    10

    15

    18

  • FUOC PID_00171668 29 El modelo relacional y el lgebra relacional

    Relacin PEDIDOS_PENDIENTES

    PEDIDOS_PENDIENTES

    num_ped ... num_cliente*

    1.234 10

    1.235 10

    1.236 15

    * {num_cliente} referencia CLIENTES.

    a) Si aplicamos la restriccin en caso de borrado y, por ejemplo, queremos borrar al clientenmero 10, no podremos hacerlo porque tiene pedidos pendientes que lo referencian.

    b) Si aplicamos la restriccin en caso de modificacin y queremos modificar el nmerodel cliente 15, no ser posible hacerlo porque tambin tiene pedidos pendientes que loreferencian.

    4.3.2. Actualizacin en cascada

    La poltica de actualizacin en cascada consiste en permitir la operacin deactualizacin de la tupla, y en efectuar operaciones compensatorias que pro-paguen en cascada la actualizacin a las tuplas que la referenciaban; se actade este modo para mantener la integridad referencial.

    Ms concretamente, la actualizacinencascadaencasodeborradoconsiste en permitir el borrado de una tupla t que tiene una clave pri-maria referenciada, y borrar tambin todas las tuplas que referencian t.

    De forma similar, la actualizacinencascadaencasodemodifica-cin consiste en permitir la modificacin de atributos de la clave pri-maria de una tupla t que tiene una clave primaria referenciada, y modi-ficar del mismo modo todas las tuplas que referencian t.

  • FUOC PID_00171668 30 El modelo relacional y el lgebra relacional

    Ejemplo de aplicacin de la actualizacin en cascada

    Supongamos que tenemos las siguientes relaciones:

    Relacin EDIFICIOS:

    EDIFICIOS

    nombre_edificio ...

    Marina

    Diagonal

    Relacin DESPACHOS:

    DESPACHOS

    edificio* nmero superficie

    Marina 120 10

    Marina 122 15

    Marina 230 20

    Diagonal 120 10

    * {edificio} referencia EDIFICIOS.

    a) Si aplicamos la actualizacin en cascada en caso de borrado y, por ejemplo, queremosborrar el edificio Diagonal, se borrar tambin el despacho Diagonal 120 que hay en eledificio, y nos quedar:

    Relacin EDIFICIOS:

    EDIFICIOS

    nombre_edificio ...

    Marina

    Relacin DESPACHOS:

    DESPACHOS

    edificio* nmero superficie

    Marina 120 10

    Marina 122 15

    Marina 230 20

    * {edificio} referencia EDIFICIOS.

  • FUOC PID_00171668 31 El modelo relacional y el lgebra relacional

    b) Si aplicamos la actualizacin en cascada en caso de modificacin, y queremos modi-ficar el nombre del edificio Marina por Mar, tambin se cambiar Marina por Mar en losdespachos Marina 120, Marina 122 y Marina 230, y nos quedar:

    Relacin EDIFICIOS:

    EDIFICIOS

    nombre_edificio ...

    Mar

    Relacin DESPACHOS:

    DESPACHOS

    edificio* nmero superficie

    Mar 120 10

    Mar 122 15

    Mar 230 20

    * {edificio} referencia EDIFICIOS.

    4.3.3. Anulacin

    Esta poltica consiste en permitir la operacin de actualizacin de la tupla y enefectuar operaciones compensatorias que pongan valores nulos a los atributosde la clave fornea de las tuplas que la referencian; esta accin se lleva a cabopara mantener la integridad referencial.

    Puesto que generalmente los SGBD relacionales permiten establecer que undeterminado atributo de una relacin no admite valores nulos, slo se puedeaplicar la poltica de anulacin si los atributos de la clave fornea s los admi-ten.

    Ms concretamente, la anulacinencasodeborrado consiste en per-mitir el borrado de una tupla t que tiene una clave referenciada y, ade-ms, modificar todas las tuplas que referencian t, de modo que los atri-butos de la clave fornea correspondiente tomen valores nulos.

    De forma similar, la anulacinencasodemodificacin consiste enpermitir la modificacin de atributos de la clave primaria de una tuplat que tiene una clave referenciada y, adems, modificar todas las tuplasque referencian t, de modo que los atributos de la clave fornea corres-pondiente tomen valores nulos.

  • FUOC PID_00171668 32 El modelo relacional y el lgebra relacional

    Ejemplo de aplicacin de la anulacin

    El mejor modo de entender en qu consiste la anulacin es mediante un ejemplo. Tene-mos las siguientes relaciones:

    Relacin VENDEDORES:

    VENDEDORES

    num_vendedor ...

    1

    2

    3

    Relacin CLIENTES:

    CLIENTES

    num_cliente ... vendedor_asig*

    23 1

    35 1

    38 2

    42 2

    50 3

    * {vendedor_asig} referencia VENDEDORES.

    a) Si aplicamos la anulacin en caso de borrado y, por ejemplo, queremos borrar al ven-dedor nmero 1, se modificarn todos los clientes que lo tenan asignado, y pasarn atener un valor nulo en vendedor_asig. Nos quedar:

    Relacin VENDEDORES:

    VENDEDORES

    num_vendedor ...

    2

    3

  • FUOC PID_00171668 33 El modelo relacional y el lgebra relacional

    Relacin CLIENTES:

    CLIENTES

    num_cliente ... vendedor_asig*

    23 NULL

    35 NULL

    38 2

    42 2

    50 3

    * {vendedor_asig} referencia VENDEDORES.

    b) Si aplicamos la anulacin en caso de modificacin, y ahora queremos cambiar el n-mero del vendedor 2 por 5, se modificarn todos los clientes que lo tenan asignado ypasarn a tener un valor nulo en vendedor_asig. Nos quedar:

    Relacin VENDEDORES:

    VENDEDORES

    num_vendedor ...

    5

    3

    Relacin CLIENTES:

    CLIENTES

    num_cliente ... vendedor_asig*

    23 NULL

    35 NULL

    38 NULL

    42 NULL

    50 3

    * {vendedor_asig} referencia VENDEDORES.

    4.3.4. Seleccin de la poltica de mantenimientode la integridadreferencial

    Hemos visto que en caso de borrado o modificacin de una clave primariareferenciada por alguna clave fornea hay varias polticas de mantenimientode la regla de integridad referencial.

  • FUOC PID_00171668 34 El modelo relacional y el lgebra relacional

    El diseador puede elegir para cada clave fornea qu poltica se aplicar encaso de borrado de la clave primaria referenciada, y cul en caso de modifica-cin de sta. El diseador deber tener en cuenta el significado de cada clavefornea concreta para poder elegir adecuadamente.

    Aplicacin de polticas diferentes

    Puede ocurrir que, para una determinada clave fornea, la poltica adecuada en caso deborrado sea diferente de la adecuada en caso de modificacin. Por ejemplo, puede sernecesario aplicar la restriccin en caso de borrado y la actualizacin en cascada en casode modificacin.

    4.4. Regla de integridad de dominio

    La regla de integridad de dominio est relacionada, como su nombre indica,con la nocin de dominio. Esta regla establece dos condiciones.

    La primeracondicin consiste en que un valor no nulo de un atributoAi debe pertenecer al dominio del atributo Ai; es decir, debe pertenecera dominio(Ai).

    Esta condicin implica que todos los valores no nulos que contiene la BD paraun determinado atributo deben ser del dominio declarado para dicho atributo.

    Ejemplo

    Si en la relacin EMPLEADOS(DNI, nombre, apellido, edad_emp) hemos declarado quedominio(DNI) es el dominio predefinido de los enteros, entonces no podremos insertar,por ejemplo, ningn empleado que tenga por DNI el valor Luis, que no es un entero.

    Recordemos que los dominios pueden ser de dos tipos: predefinidos o defini-dos por el usuario. Observad que los dominios definidos por el usuario resul-tan muy tiles, porque nos permiten determinar de forma ms especfica cu-les sern los valores admitidos por los atributos.

    Ejemplo

    Supongamos ahora que en la relacin EMPLEADOS(DNI, nombre, apellido, edad_emp) he-mos declarado que dominio(edad_emp) es el dominio definido por el usuario edad. Su-pongamos tambin que el dominio edad se ha definido como el conjunto de los enterosque estn entre 16 y 65. En este caso, por ejemplo, no ser posible insertar un empleadocon un valor de 90 para edad_emp.

    Ved tambin

    Recordad que los conceptosde dominio predefinido y do-minio definido por el usuario sehan explicado en el subaparta-do 2.2 de este mdulo didcti-co.

  • FUOC PID_00171668 35 El modelo relacional y el lgebra relacional

    La segunda condicin de la regla de integridad de dominio es ms compleja,especialmente en el caso de dominios definidos por el usuario; los SGBD, engeneral, no la soportan para estos ltimos dominios. Por estos motivos slo lapresentaremos superficialmente.

    Esta segundacondicin sirve para establecer que los operadores quepueden aplicarse sobre los valores dependen de los dominios de estosvalores; es decir, un operador determinado slo se puede aplicar sobrevalores que tengan dominios que le sean adecuados.

    Ejemplo

    Analizaremos esta segunda condicin de la regla de integridad de dominio con un ejem-plo concreto. Si en la relacin EMPLEADOS(DNI, nombre, apellido, edad_emp) se ha decla-rado que dominio(DNI) es el dominio predefinido de los enteros, entonces no se permi-tir consultar todos aquellos empleados cuyo DNI sea igual a Elena (DNI = Elena). Elmotivo es que no tiene sentido que el operador de comparacin = se aplique entre unDNI que tiene por dominio los enteros, y el valor Elena, que es una serie de caracteres.

    De este modo, el hecho de que los operadores que se pueden aplicar sobrelos valores dependan del dominio de estos valores permite detectar erroresque se podran cometer cuando se consulta o se actualiza la BD. Los dominiosdefinidos por el usuario son muy tiles, porque nos permitirn determinar deforma ms especfica cules sern los operadores que se podrn aplicar sobrelos valores.

    Ejemplo

    Veamos otro ejemplo con dominios definidos por el usuario. Supongamos que enla conocida relacin EMPLEADOS(DNI, nombre, apellido, edad_emp) se ha declara-do que dominio(DNI) es el dominio definido por el usuario nmeros_DNI y quedominio(edad_emp) es el dominio definido por el usuario edad. Supongamos quenmeros_DNI corresponde a los enteros positivos y que edad corresponde a los enterosque estn entre 16 y 65. En este caso, ser incorrecto, por ejemplo, consultar los emplea-dos que tienen el valor de DNI igual al valor de edad_emp. El motivo es que, aunque tantolos valores de DNI como los de edad_emp sean enteros, sus dominios son diferentes; porello, segn el significado que el usuario les da, no tiene sentido compararlos.

    Sin embargo, en general, los SGBD relacionales no dan apoyo a la segundacondicin de la regla de integridad de dominio para dominios definidos porel usuario. Si se quisiera hacer, sera necesario que el diseador tuviese algunaforma de especificar, para cada operador que se desease utilizar, para qu com-binaciones de dominios definidos por el usuario tiene sentido que se aplique.

    Lectura complementaria

    Para estudiar con ms de-talle la segunda condicinde la regla de integridad dedominio, podis consultarla siguiente obra: C.J.Date(2001). Introduccin a los sis-temas de bases de datos (7.aed., cap. 19). Madrid: Prenti-ce-Hall.

  • FUOC PID_00171668 36 El modelo relacional y el lgebra relacional

    5. El lgebra relacional

    Como ya hemos comentado en el apartado dedicado a las operaciones delmodelo relacional, el lgebra relacional se inspira en la teora de conjuntospara especificar consultas en una BD relacional.

    Para especificarunaconsulta en lgebra relacional, es preciso definir unoo ms pasos que sirven para ir construyendo, mediante operaciones de lge-bra relacional, una nueva relacin que contenga los datos que responden ala consulta a partir de las relaciones almacenadas. Los lenguajes basados enel lgebra relacional son procedimentales, dado que los pasos que forman laconsulta describen un procedimiento.

    La visin que presentaremos es la de un lenguaje terico y, por lo tanto, inclui-remos slo sus operaciones fundamentales, y no las construcciones que se po-dran aadir a un lenguaje comercial para facilitar cuestiones como por ejem-plo el orden de presentacin del resultado, el clculo de datos agregados, etc.

    Ved tambin

    Consultad el apartado 3 de es-te mdulo didctico.

    Una caracterstica destacable de todas las operaciones del lgebra rela-cional es que tanto los operandos como el resultado son relaciones. Estapropiedad se denomina cierrerelacional.

    Las operaciones del lgebra relacional han sido clasificadas segn distintoscriterios; de todos ellos indicamos los tres siguientes:

    1) Segn se pueden expresar o no en trminos de otras operaciones.

    a)Operacionesprimitivas: son aquellas operaciones a partir de las cuales po-demos definir el resto. Estas operaciones son la unin, la diferencia, el produc-to cartesiano, la seleccin y la proyeccin.

    b)Operacionesnoprimitivas: el resto de las operaciones del lgebra relacio-nal que no son estrictamente necesarias, porque se pueden expresar en tr-minos de las primitivas; sin embargo, las operaciones no primitivas permitenformular algunas consultas de forma ms cmoda. Existen distintas versionesdel lgebra relacional, segn las operaciones no primitivas que se incluyen.Nosotros estudiaremos las operaciones no primitivas que se utilizan con ma-yor frecuencia: la interseccin y la combinacin.

    2) Segn el nmero de relaciones que tienen como operandos:

    Implicaciones del cierrerelacional

    El hecho de que el resultadode una operacin del lgebrarelacional sea una nueva rela-cin tiene implicaciones im-portantes:1) El resultado de una opera-cin puede actuar como ope-rando de otra operacin.2) El resultado de una opera-cin cumplir todas las carac-tersticas que ya conocemos delas relaciones: no-ordenacinde las tuplas, ausencia de tu-plas repetidas, etc.

  • FUOC PID_00171668 37 El modelo relacional y el lgebra relacional

    a)Operacionesbinarias: son las que tienen dos relaciones como operandos.Son binarias todas las operaciones, excepto la seleccin y la proyeccin.

    b)Operacionesunarias: son las que tienen una sola relacin como operando.La seleccin y la proyeccin son unarias.

    3) Segn se parecen o no a las operaciones de la teora de conjuntos:

    a)Operacionesconjuntistas: son las que se parecen a las de la teora de con-juntos. Se trata de la unin, la interseccin, la diferencia y el producto carte-siano.

    b)Operacionesespecficamenterelacionales: son el resto de las operaciones;es decir, la seleccin, la proyeccin y la combinacin.

    Como ya hemos comentado anteriormente, las operaciones del lgebra re-lacional obtienen como resultado una nueva relacin. Es decir que si ha-cemos una operacin del lgebra como por ejemplo EMPLEADOS_ADM EMPLEADOS_PROD para obtener la unin de las relaciones EMPLEADOS_ADMy EMPLEADOS_PROD, el resultado de la operacin es una nueva relacin quetiene la unin de las tuplas de las relaciones de partida.

    Esta nueva relacin debe tener un nombre. En principio, consideramos que sunombre es la misma expresin del lgebra relacional que la obtiene; es decir,la misma expresin EMPLEADOS_ADM EMPLEADOS_PROD. Puesto que estenombre es largo, en ocasiones puede ser interesante cambiarlo por uno mssimple. Esto nos facilitar las referencias a la nueva relacin, y ser especial-mente til en los casos en los que queramos utilizarla como operando de otraoperacin. Usaremos la operacin auxiliar renombrar con este objetivo.

    La operacinrenombrar, que denotaremos con el smbolo :=, permiteasignar un nombre R a la relacin que resulta de una operacin del l-gebra relacional; lo hace de la forma siguiente:

    R := E,

    siendo E la expresin de una operacin del lgebra relacional.

    En el ejemplo, para dar el nombre EMPLEADOS a la relacin resultante de laoperacin EMPLEADOS_ADM EMPLEADOS_PROD, haramos:

    EMPLEADOS := EMPLEADOS_ADM EMPLEADOS_PROD.

    Cada operacin del lgebra relacional da unos nombres por defecto a los atri-butos del esquema de la relacin resultante, tal y como veremos ms adelante.

    Ved tambin

    Las operaciones del lgebra re-lacional clasificadas segn seanconjuntistas o especficamenterelacionales se estudian en lossubapartados 5.1 y 5.2 de estemdulo.

  • FUOC PID_00171668 38 El modelo relacional y el lgebra relacional

    En algunos casos, puede ser necesario cambiar estos nombres por defecto porotros nombres. Por este motivo, tambin permitiremos cambiar el nombre dela relacin y de sus atributos mediante la operacin renombrar.

    Utilizaremos tambin la operacin renombrar para cambiar el esquemade una relacin. Si una relacin tiene el esquema S(B1, B2, ..., Bn) y que-remos cambiarlo por R(A1, A2, ..., An), lo haremos de la siguiente forma:

    R(A1, A2, ..., An) := S(B1, B2, ..., Bn).

    A continuacin presentaremos un ejemplo que utilizaremos para ilustrar lasoperaciones del lgebra relacional. Despus veremos con detalle las operacio-nes.

    Supongamos que tenemos una BD relacional con las cuatro relaciones siguien-tes:

    1) La relacin EDIFICIOS_EMP, que contiene datos de distintos edificios de losque una empresa dispone para desarrollar sus actividades.

    2) La relacin DESPACHOS, que contiene datos de cada uno de los despachosque hay en los edificios anteriores.

    3) La relacin EMPLEADOS_ADM, que contiene los datos de los empleados dela empresa que llevan a cabo tareas administrativas.

    4) La relacin EMPLEADOS_PROD, que almacena los datos de los empleadosde la empresa que se ocupan de tareas de produccin.

    A continuacin describimos los esquemas de las relaciones anteriores y susextensiones en un momento determinado:

    Esquema y extensin de EDIFICIOS_EMP:

    EDIFICIOS_EMP

    edificio sup_media_desp

    Marina 15

    Diagonal 10

    Esquema y extensin de DESPACHOS:

  • FUOC PID_00171668 39 El modelo relacional y el lgebra relacional

    DESPACHOS

    edificio nmero superficie

    Marina 120 10

    Marina 230 20

    Diagonal 120 10

    Diagonal 440 10

    Esquema y extensin de EMPLEADOS_ADM:

    EMPLEADOS_ADM

    DNI nombre apellido edificio_desp nmero_desp

    40.444.255 Juan Garca Marina 120

    33.567.711 Marta Roca Marina 120

    Esquema y extensin de EMPLEADOS_PROD:

    EMPLEADOS_PROD

    DNI_emp nombre_emp apellido_emp edificio_desp nmero_desp

    33.567.711 Marta Roca Marina 120

    55.898.425 Carlos Buenda Diagonal 120

    77.232.144 Elena Pla Marina 230

    21.335.245 Jorge Soler NULL NULL

    88.999.210 Pedro Gonzlez NULL NULL

    Se considera que los valores nulos de los atributos edificio_desp y nmero_despde las relaciones EMPLEADOS_PROD y EMPLEADOS_ADM indican que el em-pleado correspondiente no tiene despacho.

    5.1. Operaciones conjuntistas

    Las operaciones conjuntistas del lgebra relacional son la unin, la intersec-cin, la diferencia y el productocartesiano.

  • FUOC PID_00171668 40 El modelo relacional y el lgebra relacional

    5.1.1. Unin

    La unin es una operacin que, a partir de dos relaciones, obtiene unanueva relacin formada por todas las tuplas que estn en alguna de lasrelaciones de partida.

    La unin es una operacin binaria, y la unin de dos relaciones T y Sse indica T S.

    La unin de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD proporciona una nue-va relacin que contiene tanto a los empleados de administracin como los empleadosde produccin; se indicara as: EMPLEADOS_ADM EMPLEADOS_PROD.

    Slo tiene sentido aplicar la unin a relaciones que tengan tuplas similares.

    Por ejemplo, se puede hacer la unin de las relaciones EMPLEADOS_ADM yEMPLEADOS_PROD porque sus tuplas se parecen. En cambio, no se podr hacer la uninde las relaciones EMPLEADOS_ADM y DESPACHOS porque, como habis podido obser-var en las tablas, las tuplas respectivas son de tipo diferente.

    Ms concretamente, para poder aplicar la unin a dos relaciones, es precisoque las dos relaciones sean compatibles. Decimos que dos relaciones T y S sonrelacionescompatibles si:

    Tienen el mismo grado.

    Se puede establecer una biyeccin entre los atributos de T y los atributosde S que hace corresponder a cada atributo Ai de T un atributo Aj de S, demodo que se cumple que dominio(Ai) = dominio(Aj).

    Ejemplo de relaciones compatibles

    Las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD tienen grado 5. Podemos estable-cer la siguiente biyeccin entre sus atributos:

    A DNI de EMPLEADOS_ADM le corresponde DNI_emp de EMPLEADOS_PROD. A nombre de EMPLEADOS_ADM le corresponde nombre_emp de EMPLEADOS_PROD. A apellido de EMPLEADOS_ADM le corresponde apellido_emp de EMPLEADOS_PROD. A edificio_desp de EMPLEADOS_ADM le corresponde edificio_desp de

    EMPLEADOS_PROD. A nmero_desp de EMPLEADOS_ADM le corresponde edificio_desp de

    EMPLEADOS_PROD.

    Adems, supondremos que los dominios de sus atributos se han declarado de forma quese cumple que el dominio de cada atributo de EMPLEADOS_ADM sea el mismo que eldominio de su atributo correspondiente en EMPLEADOS_PROD.

    Por todos estos factores, podemos llegar a la conclusin de que EMPLEADOS_ADM yEMPLEADOS_PROD son relaciones compatibles.

    A continuacin, pasaremos a definir los atributos y la extensin de la relacinresultante de una unin.

  • FUOC PID_00171668 41 El modelo relacional y el lgebra relacional

    Los atributosdelesquemadelarelacinresultantedeT S coinci-den con los atributos del esquema de la relacin T.

    La extensindelarelacinresultantedeT S es el conjunto de tuplasque pertenecen a la extensin de T, a la extensin de S o a la extensinde ambas relaciones.

    Ejemplo de unin

    Si queremos obtener una relacin R que tenga a todos los empleados de la empresadel ejemplo anterior, llevaremos a cabo la unin de las relaciones EMPLEADOS_ADM yEMPLEADOS_PROD de la forma siguiente:

    R := EMPLEADOS_ADM EMPLEADOS_PROD.

    Entonces la relacin R resultante ser la reflejada en la siguiente tabla:

    R

    DNI nombre apellido edificio_desp nmero_desp

    40.444.255 Juan Garca Marina 120

    33.567.711 Marta Roca Marina 120

    55.898.425 Carlos Buenda Diagonal 120

    77.232.144 Elena Pla Marina 230

    21.335.245 Jorge Soler NULL NULL

    88.999.210 Pedro Gonzlez NULL NULL

    El hecho de que los atributos de la relacin resultante coincidan con los atri-butos de la relacin que figura en primer lugar en la unin es una convencin;tericamente, tambin habra sido posible convenir que coincidiesen con losde la relacin que figura en segundo lugar.

    5.1.2. Interseccin

    La interseccin es una operacin que, a partir de dos relaciones, obtie-ne una nueva relacin formada por las tuplas que pertenecen a las dosrelaciones de partida.

    La interseccin es una operacin binaria; la interseccin de dos relacio-nes T y S se indica T S.

    La interseccin de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD obtiene unanueva relacin que incluye a los empleados que son al mismo tiempo de administraciny de produccin: se indicara como EMPLEADOS_ADM EMPLEADOS_PROD.

    No-repeticin de tuplas

    Notad que en caso de que unamisma tupla est en las dosrelaciones que se unen, el re-sultado de la unin no la ten-dr repetida. El resultado dela unin es una nueva relacinpor lo que no puede tener re-peticiones de tuplas.

  • FUOC PID_00171668 42 El modelo relacional y el lgebra relacional

    La interseccin, como la unin, slo se puede aplicar a relaciones que tengantuplas similares. Para poder hacer la interseccin de dos relaciones, es preciso,pues, que las relaciones sean compatibles.

    A continuacin definiremos los atributos y la extensin de la relacin resul-tante de una interseccin.

    Los atributosdelesquemadelarelacinresultantedeT Scoincidencon los atributos del esquema de la relacin T.

    La extensindelarelacinresultantedeT S es el conjunto de tuplasque pertenecen a la extensin de ambas relaciones.

    Ejemplo de interseccin

    Si queremos obtener una relacin R que incluya a todos los empleados de la empresadel ejemplo que trabajan tanto en administracin como en produccin, realizaremos lainterseccin de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD de la siguienteforma:

    R : = EMPLEADOS_ADM EMPLEADOS_PROD.

    Entonces, la relacin R resultante ser:

    R

    DNI nombre apellido edificio_desp nmero_desp

    33.567.711 Marta Roca Marina 120

    Observad que se ha tomado la convencin de que los atributos de la relacinque resulta coincidan con los atributos de la relacin que figura en primerlugar.

    5.1.3. Diferencia

    La diferencia es una operacin que, a partir de dos relaciones, obtieneuna nueva relacin formada por todas las tuplas que estn en la prime-ra relacin y, en cambio, no estn en la segunda. La diferencia es unaoperacin binaria, y la diferencia entre las relaciones T y S se indica co-mo T S.

    La diferencia EMPLEADOS_ADM menos EMPLEADOS_PROD da como resultado una nue-va relacin que contiene a los empleados de administracin que no son empleados deproduccin, y se indicara de este modo: EMPLEADOS_ADM EMPLEADOS_PROD.

  • FUOC PID_00171668 43 El modelo relacional y el lgebra relacional

    La diferencia, como ocurra en la unin y la interseccin, slo tiene sentidosi se aplica a relaciones que tengan tuplas similares. Para poder realizar la di-ferencia de dos relaciones es necesario que las relaciones sean compatibles.

    A continuacin definimos los atributos y la extensin de la relacin resultantede una diferencia.

    Los atributosdelesquemadelarelacinresultantedeTS coincidencon los atributos del esquema de la relacin T.

    La extensindelarelacinresultantedeTS es el conjunto de tuplasque pertenecen a la extensin de T, pero no a la de S.

    Ejemplo de diferencia

    Si queremos obtener una relacin R con todos los empleados de la empresa del ejemploque trabajan en administracin, pero no en produccin, haremos la diferencia de lasrelaciones EMPLEADOS_ADM y EMPLEADOS_PROD de la forma siguiente:

    R := EMPLEADOS_ADM EMPLEADOS-_PROD

    Entonces la relacin R resultante ser:

    R

    DNI nombre apellido edificio_desp nmero_desp

    40.444.255 Juan Garca Marina 120

    Se ha tomado la convencin de que los atributos de la relacin resultante coin-cidan con los atributos de la relacin que figura en primer lugar.

    5.1.4. Producto cartesiano

    El producto cartesiano es una operacin que, a partir de dos relaciones,obtiene una nueva relacin formada por todas las tuplas que resultande concatenar tuplas de la primera relacin con tuplas de la segunda.

    El producto cartesiano es una operacin binaria. Siendo T y S dos re-laciones que cumplen que sus esquemas no tienen ningn nombre deatributo comn, el producto cartesiano de T y S se indica como T x S.

    Si calculamos el producto cartesiano de EDIFICIOS_EMP y DESPACHOS, obtendremosuna nueva relacin que contiene todas las concatenaciones posibles de tuplas deEDIFICIOS_EMP con tuplas de DESPACHOS.

  • FUOC PID_00171668 44 El modelo relacional y el lgebra relacional

    Si se quiere calcular el producto cartesiano de dos relaciones que tienen algnnombre de atributo comn, slo hace falta renombrar previamente los atribu-tos adecuados de una de las dos relaciones.

    A continuacin definimos los atributos y la extensin de la relacin resultantede un producto cartesiano.

    Los atributosdelesquemadelarelacinresultantedeT x S son todos

    los atributos de T y todos los atributos de S1.

    La extensindelarelacinresultantedeT x S es el conjunto de todaslas tuplas de la forma para las que se cumpleque pertenece a la extensin de T y que pertenece a la extensin de S.

    Ejemplo de producto cartesiano

    El producto cartesiano de las relaciones DESPACHOS y EDIFICIOS_EMP del ejemplo sepuede hacer como se indica (es necesario renombrar atributos previamente):

    EDIFICIOS(nombre_edificio, sup_media_desp) := EDICIOS_EMP(edificio, sup_media_desp).

    R := EDIFICIOS x DESPACHOS.

    Entonces, la relacin R resultante ser:

    R

    nombre_edificio sup_media_desp edificio nmero superficie

    Marina 15 Marina 120 10

    Marina 15 Marina 230 20

    Marina 15 Diagonal 120 10

    Marina 15 Diagonal 440 10

    Diagonal 10 Marina 120 10

    Diagonal 10 Marina 230 20

    Diagonal 10 Diagonal 120 10

    Diagonal 10 Diagonal 440 10

    Conviene sealar que el producto cartesiano es una operacin que raramentese utiliza de forma explcita, porque el resultado que da no suele ser til pararesolver las consultas habituales.

    (1)Recordad que T y S no tienenningn nombre de atributo co-mn.

  • FUOC PID_00171668 45 El modelo relacional y el lgebra relacional

    A pesar de ello, el producto cartesiano se incluye en el lgebra relacional por-que es una operacin primitiva; a partir de la cual se define otra operacin dellgebra, la combinacin, que se utiliza con mucha frecuencia.

    5.2. Operaciones especficamente relacionales

    Las operaciones especficamente relacionales son la seleccin, la proyecciny la combinacin.

    5.2.1. Seleccin

    Podemos ver la seleccin como una operacin que sirve para elegir al-gunas tuplas de una relacin y eliminar el resto. Ms concretamente, laseleccin es una operacin que, a partir de una relacin, obtiene unanueva relacin formada por todas las tuplas de la relacin de partidaque cumplen una condicin de seleccin especificada.

    La seleccin es una operacin unaria. Siendo C una condicin de selec-cin, la seleccin de T con la condicin C se indica como T(C).

    Para obtener una relacin con todos los despachos del edificio Marina de ms de12 metros cuadrados, podemos aplicar una seleccin a la relacin DESPACHOS conuna condicin de seleccin que sea edificio = Marina y superficie > 12; se indicaraDESPACHOS(edificio = Marina y superficie > 12).

    En general, la condicin de seleccin C est formada por una o ms clusulasde la forma:

    Ai v,

    o bien:

    Ai Aj,

    donde Ai y Aj son atributos de la relacin T, es un operador de comparacin2

    y v es un valor. Adems, se cumple que:

    En las clusulas de la forma Ai v, v es un valor del dominio de Ai. En las clusulas de la forma Ai, Aj, Ai y Aj tienen el mismo dominio.

    Las clusulas que forman una condicin de seleccin se conectan con los si-guientes operadores booleanos: y () y o ().

    A continuacin definimos los atributos y la extensin de la relacin resultantede una seleccin.

    (2)Es decir, =, , , o .

  • FUOC PID_00171668 46 El modelo relacional y el lgebra relacional

    Los atributosdelesquemadelarelacinresultantedeT(C) coincidencon los atributos del esquema de la relacin T.

    La extensindelarelacinresultantedeT(C) es el conjunto de tuplasque pertenecen a la extensin de T y que satisfacen la condicin de se-leccin C. Una tupla t satisface una condicin de seleccin C si, despusde sustituir cada atributo que hay en C por su valor en t, la condicinC se evala al valor cierto.

    Ejemplo de seleccin

    Si queremos obtener una relacin R con los despachos de la BD del ejemplo que estn enel edificio Marina y que tienen una superficie de ms de 12 metros cuadrados, haremosla siguiente seleccin:

    R := DESPACHOS(edificio = Marina y superficie > 12).

    La relacin R resultante ser:

    R

    edificio nmero superficie

    Marina 230 20

    5.2.2. Proyeccin

    Podemos considerar la proyeccin como una operacin que sirve paraelegir algunos atributos de una relacin y eliminar el resto. Ms concre-tamente, la proyeccin es una operacin que, a partir de una relacin,obtiene una nueva relacin formada por todas las (sub)tuplas de la re-lacin de partida que resultan de eliminar unos atributos especificados.

    La proyeccin es una operacin unaria. Siendo {Ai, Aj, ..., Ak} un sub-conjunto de los atributos del esquema de la relacin T, la proyeccinde T sobre {Ai, Aj, ..., Ak} se indica como T[Ai, Aj, ..., Ak].

    Para obtener una relacin que tenga slo los atributos nombre y apellido de los emplea-dos de administracin, podemos hacer una proyeccin en la relacin EMPLEADOS_ADMsobre estos dos atributos. Se indicara de la forma siguiente: EMPLEADOS_ADM [nombre,apellido].

    A continuacin definiremos los atributos y la extensin de la relacin resul-tante de una proyeccin.

  • FUOC PID_00171668 47 El modelo relacional y el lgebra relacional

    Los atributosdelesquemadelarelacinresultantedeT[Ai,Aj,...,Ak] son los atributos {Ai, Aj, ..., Ak}.

    La extensindelarelacinresultantedeT[Ai,Aj,...,Ak] es el conjuntode todas las tuplas de la forma , donde se cumple quet es una tupla de la extensin de T y donde t.Ap denota el valor para elatributo Ap de la tupla t.

    Ejemplo de proyeccin

    Si queremos obtener una relacin R con el nombre y el apellido de todos los empleadosde administracin de la BD del ejemplo, haremos la siguiente proyeccin:

    R := EMPLEADOS_ADM[nombre, apellido].

    Entonces, la relacin R resultante ser:

    R

    nombre apellido

    Juan Garca

    Marta Roca

    5.2.3. Combinacin

    La combinacin es una operacin que, a partir de dos relaciones, ob-tiene una nueva relacin formada por todas las tuplas que resultan deconcadenar tuplas de la primera relacin con tuplas de la segunda, yque cumplen una condicin de combinacin especificada.

    La combinacin es una operacin binaria. Siendo T y S dos relacionescuyos esquemas no tienen ningn nombre de atributo comn, y siendoB una condicin de combinacin, la combinacin de T y S segn lacondicin B se indica T[B]S.

    Para conseguir una relacin que tenga los datos de cada uno de los empleados de ad-ministracin junto con los datos de los despachos donde trabajan, podemos hacer unacombinacin de las relaciones EMPLEADOS_ADM y DESPACHOS, donde la condicin decombinacin indique lo siguiente: edificio_desp = edificio y nmero_desp = nmero. La con-dicin de combinacin hace que el resultado slo combine los datos de un empleadocon los datos de un despacho si el edificio_desp y el nmero_desp del empleado son igualesque el edificio y el nmero del despacho, respectivamente. Es decir, la condicin hace quelos datos de un empleado se combinen con los datos del despacho donde trabaja, perono con datos de otros despachos.

    La combinacin del ejemplo anterior se indicara de la forma siguiente:

    EMPLEADOS_ADM[edificio_desp = edificio, nmero_desp = nmero]DESPACHOS.

    Eliminacin de las tuplasrepetidas

    Notad que la proyeccin elimi-na implcitamente todas las tu-plas repetidas. El resultado deuna proyeccin es una relacinvlida y no puede tener repeti-ciones de tuplas.

  • FUOC PID_00171668 48 El modelo relacional y el lgebra relacional

    Si se quiere combinar dos relaciones que tienen algn nombre de atributocomn, slo hace falta renombrar previamente los atributos repetidos de unade las dos.

    La condicinB de una combinacin T[B]S est formada por una o ms com-paraciones de la forma

    Ai Aj,

    donde Ai es un atributo de la relacin T, Aj es un atributo de la relacin S, esun operador de comparacin (=, , , ), y se cumple que Ai y Aj tienenel mismo dominio. Las comparaciones de una condicin de combinacin seseparan mediante comas.

    A continuacin definimos los atributos y la extensin de la relacin resultantede una combinacin.

    Los atributosdelesquemadelarelacinresultantedeT[B]S son to-

    dos los atributos de T y todos los atributos de S3.

    La extensindelarelacinresultantedeT[B]S es el conjunto de tu-plas que pertenecen a la extensin del producto cartesiano T x S y quesatisfacen todas las comparaciones que forman la condicin de combi-nacin B. Una tupla t satisface una comparacin si, despus de sustituircada atributo que figura en la comparacin por su valor en t, la compa-racin se evala al valor cierto.

    Ejemplo de combinacin

    Supongamos que se desea encontrar los datos de los despachos que tienen una superficiemayor o igual que la superficie media de los despachos del edificio donde estn situados.La siguiente combinacin nos proporcionar los datos de estos despachos junto con losdatos de su edificio (observad que es preciso renombrar previamente los atributos):

    EDIFICIOS(nombre_edficio, sup_media_desp) := EDIFICIOS_EMP(edificio, sup_media_desp),

    R := EDIFICIOS[nombre_edificio = edificio, sup_media_desp superficie] DESPACHOS.

    Entonces, la relacin R resultante ser:

    R

    nombre_edificio sup_media_desp edificio nmero superficie

    Marina 15 Marina 230 20

    Diagonal 10 Diagonal 120 10

    Diagonal 10 Diagonal 440 10

    (3)Recordad que T y S no tienenningn nombre de atributo co-mn.

  • FUOC PID_00171668 49 El modelo relacional y el lgebra relacional

    Supongamos ahora que para obtener los datos de cada uno de los empleados de adminis-tracin, junto con los datos del despacho donde trabajan, utilizamos la siguiente com-binacin:

    R := EMPLEADOS_ADM[edificio_desp = edificio, nmero_desp = nmero]DESPACHOS.

    La relacin R resultante ser:

    R

    DNI nombre apellido edificio_desp nmero_desp edificio nmero superficie

    40.444.255 Juan Garca Marina 120 Marina 120 10

    33.567.711 Marta Roca Marina 120 Marina 120 10

    La relacin R combina los datos de cada empleado con los datos de su despacho.

    En ocasiones, la combinacin recibe el nombre de -combinacin, y cuandotodas las comparaciones de la condicin de la combinacin tienen el operador=, se denomina equicombinacin.

    Segn esto, la combinacin del ltimo ejemplo es una equicombinacin.

    Observad que el resultado de una equicombinacin siempre incluye una o msparejas de atributos que tienen valores idnticos en todas las tuplas.

    En el ejemplo anterior, los valores de edificio_desp coinciden con los de edificio, y losvalores de nmero_desp coinciden con los de nmero.

    Puesto que uno de cada par de atributos es superfluo, se ha establecido unavariante de combinacin denominada combinacin natural, con el fin de eli-minarlos.

    La combinacinnatural de dos relaciones T y S se denota como T * Sy consiste bsicamente en una equicombinacin seguida de la elimina-cin de los atributos superfluos; adems, se considera por defecto quela condicin de combinacin iguala todas las parejas de atributos quetienen el mismo nombre en T y en S.

    Observad que, a diferencia de la equicombinacin, la combinacin na-tural se aplica a relaciones que tienen nombres de atributos comunes.

  • FUOC PID_00171668 50 El modelo relacional y el lgebra relacional

    Ejemplo de combinacin natural

    Si hacemos:

    R := EDIFICIOS_EMP * DESPACHOS,

    se considera que la condicin es edificio = edificio porque edificio es el nico nombre deatributo que figura tanto en el esquema de EDIFICIOS_EMP como en el esquema de DES-PACHOS. El resultado de esta combinacin natural es:

    R

    edificio sup_media_desp nmero superficie

    Marina 15 120 10

    Marina 15 230 20

    Diagonal 10 120 10

    Diagonal 10 440 10

    Notad que se ha eliminado uno de los atributos de nombre edificio.

    En ocasiones, antes de la combinacin natural es necesario aplicar la operacinrenombrar para hacer coincidir los nombres de los atributos que nos interesaigualar.

    Ejemplo de combinacin natural con renominacin

    Por ejemplo, si queremos obtener los datos de cada uno de los empleados de administra-cin junto con los datos del despacho donde trabaja