Fundamentos de Bases de Datos PDF
Document Details
Uploaded by CozyVirginiaBeach9131
Tags
Summary
Este documento proporciona información sobre los fundamentos del modelo relacional como base para las aplicaciones de procesamiento de datos. Explora la estructura de las bases de datos relacionales y los lenguajes formales de consulta. El texto se enfoca en la representación de datos y la base teórica de las bases de datos relacionales.
Full Transcript
CAPÍTULO 3 EL MODELO RELACIONAL E l modelo relacional se ha establecido actualmente como el principal modelo de datos para las aplicaciones de procesamiento de datos. Ha conseguido la posició...
CAPÍTULO 3 EL MODELO RELACIONAL E l modelo relacional se ha establecido actualmente como el principal modelo de datos para las aplicaciones de procesamiento de datos. Ha conseguido la posición principal debido a su simplicidad, que facilita el trabajo del programador en comparación con otros modelos anteriores como el de red y el jerárquico. En este capítulo se estudia en primer lugar los fundamentos del modelo relacional, que pro- porciona una forma muy simple y potente de representar datos. A continuación se describen tres lenguajes formales de consulta; los lenguajes de consulta se usan para especificar las soli- citudes de información. Los tres que se estudian en este capítulo no son cómodos de usar, pero a cambio sirven como base formal para lenguajes de consulta que sí lo son y que se estudiarán más adelante. El primer lenguaje de consulta, el álgebra relacional, se estudia en detalle. El álgebra relacional forma la base del lenguaje de consulta SQL ampliamente usado. A conti- nuación se proporcionan visiones generales de otros dos lenguajes formales: el cálculo rela- cional de tuplas y el cálculo relacional de dominios, que son lenguajes declarativos de consulta basados en la lógica matemática. El cálculo relacional de dominios es la base del lenguaje QBE. Existe una amplia base teórica de las bases de datos relacionales. En este capítulo se estu- dia la base teórica referida a las consultas. En el Capítulo 7 se examinarán aspectos de la teo- ría de bases de datos relacionales que ayudan en el diseño de esquemas de bases de datos relacionales, mientras que en los Capítulos 13 y 14 se estudian aspectos de la teoría que se refie- ren al procesamiento eficiente de consultas. 3.1. LA ESTRUCTURA DE LAS BASES DE DATOS RELACIONALES Una base de datos relacional consiste en un conjunto de cional se puede hacer referencia a estas cabeceras como tablas, a cada una de las cuales se le asigna un nombre atributos (igual que se hizo en el modelo E-R en el exclusivo. Cada tabla tiene una estructura parecida a la Capítulo 2). Para cada atributo hay un conjunto de valo- presentada en el Capítulo 2, donde se representaron las res permitidos, llamado dominio de ese atributo. Para bases de datos E-R mediante tablas. Cada fila de la tabla el atributo nombre-sucursal, por ejemplo, el dominio es representa una relación entre un conjunto de valores. el conjunto de los nombres de las sucursales. Suponga- Dado que cada tabla es un conjunto de dichas relacio- mos que D1 denota el conjunto de todos los números de nes, hay una fuerte correspondencia entre el concepto cuenta, D2 el conjunto de todos los nombres de sucur- de tabla y el concepto matemático de relación, del que sal y D3 el conjunto de los saldos. Como se vio en el toma su nombre el modelo de datos relacional. A con- Capítulo 2 todas las filas de cuenta deben consistir en tinuación se introduce el concepto de relación. una tupla (v1, v2, v3), donde v1 es un número de cuenta En este capítulo se utilizarán varias relaciones dife- (es decir, v1 está en el dominio D1), v2 es un nombre de rentes para ilustrar los conceptos subyacentes al modelo sucursal (es decir, v2 está en el dominio D2) y v3 es un de datos relacional. Estas relaciones representan parte saldo (es decir, v3 está en el dominio D3). En general, de una entidad bancaria. Se diferencian ligeramente de las tablas que se utilizaron en el Capítulo 2, por lo que se puede simplificar la representación. En el Capítulo 7 número-cuenta nombre-sucursal saldo se estudiarán los criterios sobre la adecuación de las C-101 Centro 500 estructuras relacionales. C-102 Navacerrada 400 C-201 Galapagar 900 3.1.1. Estructura básica C-215 Becerril 700 C-217 Galapagar 750 Considérese la tabla cuenta de la Figura 3.1. Tiene tres C-222 Moralzarzal 700 cabeceras de columna: número-cuenta, nombre-sucur- C-305 Collado Mediano 350 sal y saldo. Siguiendo la terminología del modelo rela- FIGURA 3.1. La relación cuenta. 53 FUNDAMENTOS DE BASES DE DATOS cuenta sólo contendrá un subconjunto del conjunto de consideran unidades indivisibles. Por ejemplo, el con- todas las filas posibles. Por tanto, cuenta es un subcon- junto de los enteros es un dominio atómico, pero el con- junto de junto de todos los conjuntos de enteros es un dominio no atómico. La diferencia es que no se suele considerar D1 × D2 × D3 que los enteros tengan subpartes, pero sí se considera que los conjuntos de enteros las tienen; por ejemplo, los En general, una tabla de n atributos debe ser un sub- enteros que forman cada conjunto. Lo importante no es conjunto de lo que sea el propio dominio, sino la manera en que se utilizan los elementos del dominio en la base de datos. D1 × D2 × … × Dn – 1 × Dn El dominio de todos los enteros sería no atómico si se considerase que cada entero fuera una lista ordenada de Los matemáticos definen las relaciones como sub- cifras. En todos los ejemplos se supondrá que los domi- conjuntos del producto cartesiano de la lista de domi- nios son atómicos. En el Capítulo 9 se estudiarán exten- nios. Esta definición se corresponde de manera casi siones al modelo de datos relacional para permitir exacta con la definición de tabla dada anteriormente. La dominios no atómicos. única diferencia es que aquí se han asignado nombres Es posible que varios atributos tengan el mismo a los atributos, mientras que los matemáticos sólo uti- dominio. Por ejemplo, supóngase que se tiene una rela- lizan «nombres» numéricos, utilizando el entero 1 para ción cliente que tiene los tres atributos nombre-cliente, denotar el atributo cuyo dominio aparece en primer lugar calle-cliente y ciudad-cliente y una relación empleado en la lista de dominios, 2 para el atributo cuyo dominio que incluye el atributo nombre-empleado. Es posible aparece en segundo lugar, etcétera. Como las tablas son que los atributos nombre-cliente y nombre-empleado esencialmente relaciones, se utilizarán los términos tengan el mismo dominio, el conjunto de todos los nom- matemáticos relación y tupla en lugar de los términos bres de personas, que en el nivel físico son cadenas de tabla y fila. Una variable tupla es una variable que caracteres. Los dominios de saldo y nombre-sucursal, representa a una tupla; en otras palabras, una tupla que por otra parte, deberían ser distintos. Quizás es menos representa al conjunto de todas las tuplas. claro si nombre-cliente y nombre-sucursal deberían tener En la relación cuenta de la Figura 3.1 hay siete tuplas. el mismo dominio. En el nivel físico, tanto los nombres Supóngase que la variable tupla t hace referencia a la de clientes como los nombres de sucursales son cade- primera tupla de la relación. Se utiliza la notación nas de caracteres. Sin embargo, en el nivel lógico puede t[número-cuenta] para denotar el valor de t en el atributo que se desee que nombre-cliente y nombre-sucursal ten- número-cuenta. Por tanto, t[número-cuenta] = «C-101» gan dominios diferentes. y t[nombre-sucursal] = «Centro». De manera alterna- Un valor de dominio que es miembro de todos los tiva, se puede escribir t para denotar el valor de la dominios posibles es el valor nulo, que indica que el tupla t en el primer atributo (número-cuenta), t para valor es desconocido o no existe. Por ejemplo, supón- denotar nombre-sucursal, etcétera. Dado que las rela- gase que se incluye el atributo número-teléfono en la rela- ciones son conjuntos se utiliza la notación matemática t ción cliente. Puede ocurrir que un cliente no tenga número ∈ r para denotar que la tupla t está en la relación r. de teléfono, o que su número de teléfono no figure en la El orden en que aparecen las tuplas es irrelevante, guía. Entonces habrá que recurrir a los valores nulos para dado que una relación es un conjunto de tuplas. Así, si indicar que el valor es desconocido o que no existe. Más las tuplas de una relación se muestran ordenadas como adelante se verá que los valores nulos crean algunas difi- en la Figura 3.1, o desordenadas, como en la Figura 3.2, cultades cuando se tiene acceso a la base de datos o no importa; las relaciones de estas figuras son las mis- cuando se actualiza y que, por tanto, deben eliminarse si mas, ya que ambas contienen el mismo conjunto de es posible. Se asumirá inicialmente que no hay valores tuplas. nulos y en el Apartado 3.3.4 se describirá el efecto de los Se exigirá que, para todas las relaciones r, los domi- valores nulos en las diferentes operaciones. nios de todos los atributos de r sean atómicos. Un domi- nio es atómico si los elementos del dominio se 3.1.2. Esquema de la base de datos Cuando se habla de bases de datos se debe diferenciar número-cuenta nombre-sucursal saldo entre el esquema de la base de datos, o diseño lógico de la misma, y el ejemplar de la base de datos, que es C-101 Centro 500 C-215 Becerril 700 una instantánea de los datos de la misma en un momento C-102 Navacerrada 400 dado. C-305 Collado Mediano 350 El concepto de relación se corresponde con el con- C-201 Galapagar 900 cepto de variable de los lenguajes de programación. El C-222 Moralzarzal 700 concepto de esquema de la relación se corresponde C-217 Galapagar 750 con el concepto de definición de tipos de los lenguajes FIGURA 3.2. La relación cuenta con las tuplas desordenadas. de programación. 54 CAPÍTULO 3 EL MODELO RELACIONAL Resulta conveniente dar un nombre a los esquemas en la relación sucursal para encontrar los nombres de de las relaciones, igual que se dan nombres a las defi- todas las sucursales sitas en Arganzuela. Luego, para niciones de tipos en los lenguajes de programación. Se cada una de ellas, se mira en la relación cuenta para adopta el convenio de utilizar nombres en minúsculas encontrar la información sobre las cuentas abiertas en para las relaciones y nombres que comiencen por una esa sucursal. Esto no es sorprendente: recuérdese que letra mayúscula para los esquemas de las relaciones. los atributos que forma la clave primaria de un conjunto Siguiendo esta notación se utilizará Esquema-cuenta de entidades fuertes aparecen en la tabla creada para para denotar el esquema de la relación de la relación representar el conjunto de entidades, así como en las cuenta. Por tanto, tablas creadas para crear relaciones en las que partici- par el conjunto de entidades. Esquema-cuenta = (número-cuenta, Continuemos con el ejemplo bancario. Se necesita nombre-sucursal, saldo) una relación que describa la información sobre los clien- tes. El esquema de la relación es: Se denota el hecho de que cuenta es una relación de Esquema-cuenta mediante Esquema-cliente = (nombre-cliente, calle-cliente, ciudad-cliente) cuenta (Esquema-cuenta) En la Figura 3.4 se muestra un ejemplo de la relación En general, los esquemas de las relaciones incluyen cliente (Esquema-cliente). Obsérvese que se ha omi- una lista de los atributos y de sus dominios correspon- tido el atributo id-cliente, que se usó en el Capítulo 2, dientes. La definición exacta del dominio de cada atri- porque no se desea tener esquemas de relación más buto no será relevante hasta que se discuta el lenguaje pequeños en este ejemplo. Se asume que el nombre de SQL en el Capítulo 4. cliente identifica unívocamente un cliente; obviamente, El concepto de ejemplar de relación se corresponde esto no es cierto en el mundo real, pero las suposicio- con el concepto de valor de una variable en los lengua- nes hechas en estos ejemplos los hacen más sencillos jes de programación. El valor de una variable dada puede de entender. cambiar con el tiempo; de manera parecida, el conte- En una base de datos del mundo real, id-cliente (que nido del ejemplar de una relación puede cambiar con el podría ser el número de la seguridad social o un identi- tiempo cuando la relación se actualiza. Sin embargo, se ficador generado por el banco) serviría para identificar suele decir simplemente «relación» cuando realmente unívocamente a los clientes. se quiere decir «ejemplar de la relación». También se necesita una relación que describa la aso- Como ejemplo de ejemplar de una relación, consi- ciación entre los clientes y las cuentas. El esquema de dérese la relación sucursal de la Figura 3.3. El esquema la relación que describe esta asociación es: de esa relación es Esquema-impositor = (nombre-cliente, Esquema-relación = (nombre-sucursal, número-cuenta) ciudad-sucursal, activos) En la Figura 3.5 se muestra un ejemplo de la relación Obsérvese que el atributo nombre de la sucursal apa- impositor (Esquema-impositor). rece tanto en Esquema-sucursal como en Esquema- Puede parecer que, para el presente ejemplo banca- cuenta. Esta duplicidad no es una coincidencia. Más rio, se podría tener sólo un esquema de relación, en vez bien, utilizar atributos comunes en los esquemas de las de tener varios. Es decir, puede resultar más sencillo relaciones es una manera de relacionar las tuplas de rela- para el usuario pensar en términos de un esquema de ciones diferentes. Por ejemplo, supóngase que se desea obtener información sobre todas las cuentas abiertas en sucursales ubicadas en Arganzuela. Primero se busca nombre-cliente calle-cliente ciudad-cliente Abril Preciados Valsaín Amo Embajadores Arganzuela Badorrey Delicias Valsaín nombre de la sucursal ciudad de la sucursal activos Fernández Jazmín León Galapagar Arganzuela 7.500 Gómez Carretas Cerceda Centro Arganzuela 9.000.000 González Arenal La Granja Becerril Aluche 2.000 López Mayor Peguerinos Segovia Cerceda 3.700.000 Pérez Carretas Cerceda Navacerrada Aluche 1.700.000 Rodríguez Yeserías Cádiz Navas de la Asunción Alcalá de Henares 1.500 Rupérez Ramblas León Moralzarzal La Granja 2.500 Santos Mayor Peguerinos Collado Mediano Aluche 8.000.000 Valdivieso Goya Vigo FIGURA 3.3. La relación sucursal. FIGURA 3.4. La relación cliente. 55 FUNDAMENTOS DE BASES DE DATOS nombre cliente número cuenta número-préstamo nombre-sucursal importe Abril C-102 P-11 Collado Mediano 900 Gómez C-101 P-14 Centro 1.500 González C-201 P-15 Navacerrada 1.500 González C-217 P-16 Navacerrada 1.300 López C-222 P-17 Centro 1.000 Rupérez C-215 P-23 Moralzarzal 2.000 Santos C-305 P-93 Becerril 500 FIGURA 3.5. La relación impositor. FIGURA 3.6. La relación préstamo. relación, en lugar de en términos de varios esquemas. La entidad bancaria que se ha descrito se deriva del Supóngase que sólo se utilizara una relación para el diagrama E-R mostrado en la Figura 3.8. Los esquemas ejemplo, con el esquema de las relaciones se corresponden con el conjunto de tablas que se podrían generar utilizando el método esbo- (nombre-sucursal, ciudad-sucursal, activos, zado en el Apartado 2.9. Obsérvese que las tablas para nombre-cliente, calle-cliente, ciudad-cliente, cuenta-sucursal y préstamo-sucursal se han combinado número-cuenta, saldo) en las tablas de cuenta y préstamo respectivamente. Esta combinación es posible dado que las relaciones son de Obsérvese que si un cliente tiene varias cuentas hay varios a uno desde cuenta y préstamo, respectivamente, que repetir su dirección una vez por cada cuenta. Es a sucursal y, además, la participación de cuenta y prés- decir, hay que repetir varias veces parte de la informa- tamo en las relaciones correspondientes es total, como ción. Esta repetición supone un gasto inútil y se evita indican las líneas dobles en la figura. Finalmente, obsér- mediante el uso de varias relaciones, como en el ejem- vese que la relación cliente puede contener información plo presente. sobre clientes que ni tengan cuenta ni un préstamo en Además, si una sucursal no tiene ninguna cuenta (por el banco. ejemplo, una sucursal recién creada que todavía no tiene La entidad bancaria aquí descrita servirá como ejem- clientes), no se puede construir una tupla completa en la plo principal en este capítulo y en los siguientes. Cuando relación única anterior, dado que no hay todavía ningún sea necesario, habrá que introducir más esquemas de dato disponible referente a cliente ni a cuenta. Para repre- relaciones para ilustrar casos concretos. sentar las tuplas incompletas hay que utilizar valores nulos que indiquen que ese valor es desconocido o no existe. 3.1.3. Claves Por tanto, en el ejemplo presente, los valores de nombre- cliente, calle-cliente, etcétera, deben quedar nulos. Uti- Los conceptos de superclave, de clave candidata y de lizando varias relaciones se puede representar la clave primaria, tal y como se discute en el Capítulo 2, información de las sucursales de un banco sin clientes también son aplicables en el modelo relacional. Por sin utilizar valores nulos. Sencillamente, se utiliza una ejemplo, en Esquema-sucursal, tanto {nombre-sucur- tupla en Esquema-sucursal para representar la informa- sal} como {nombre-sucursal, ciudad-sucursal} son ción de la sucursal y sólo crear tuplas en los otros esque- superclaves. {nombre-sucursal, ciudad-sucursal} no es mas cuando esté disponible la información adecuada. una clave candidata porque {nombre-sucursal} es un En el Capítulo 7 se estudiarán los criterios para deci- subconjunto de {nombre-sucursal, ciudad-sucursal} y dir cuándo un conjunto de esquemas de relaciones es {nombre-sucursal} es una superclave. Sin embargo, más apropiado que otro en términos de repetición de la {nombre-sucursal} es una clave candidata, y servirá información y de la existencia de valores nulos. Por también como clave primaria para estos fines. El atri- ahora se supondrá que los esquemas de las relaciones buto ciudad-sucursal no es una superclave, dado que vienen dados de antemano. dos sucursales de la misma ciudad pueden tener nom- Se incluyen dos relaciones más para describir los bres diferentes (y diferentes volúmenes de activos). datos de los préstamos concedidos en las diferentes sucursales del banco: nombre cliente número préstamo Fernández P-16 Esquema-préstamo = (número-préstamo, Gómez P-93 nombre-sucursal, importe) Gómez P-15 Esquema-prestatario = (nombre-cliente, López P-14 número-préstamo) Pérez P-17 Santos P-11 Sotoca P-23 Las relaciones de ejemplo préstamo (Esquema-prés- Valdivieso P-17 tamo) y prestatario (Esquema-prestatario) se muestran en las Figuras 3.5 y 3.6, respectivamente. FIGURA 3.7. La relación prestatario. 56 CAPÍTULO 3 EL MODELO RELACIONAL ciudad-sucursal número-cuenta saldo nombre-sucursal activos cuenta sucursal-cuenta sucursal impositor sucursal-préstamo cliente prestatario préstamo nombre-cliente ciudad-cliente número-préstamo importe calle-cliente FIGURA 3.8. Diagrama E-R de la entidad bancaria. Sea R el esquema de una relación. Si se dice que un ción. Si la relación es de varios a varios, esta su- subconjunto K de R es una superclave de R para las rela- perclave es también la clave primaria. En el Apar- ciones r(R) en las que no hay dos tuplas diferentes que tado 2.4.2 se describe la manera de determinar las tengan los mismos valores en todos los atributos de K. claves primarias en otros casos. Recuérdese del Es decir, si t1 y t2 están en R y t1 ≠ t2, entonces t1[K] ≠ Apartado 2.9.3 que no se genera ninguna tabla para t2[K]. los conjuntos de relaciones que vinculan un con- Si el esquema de una base de datos relacional se basa junto de entidades débiles con el conjunto de enti- en las tablas derivadas de un esquema E-R es posible dades fuertes correspondiente. determinar la clave primaria del esquema de una rela- Tablas combinadas. Recuérdese del Apartado ción a partir de las claves primarias de los conjuntos de 2.9.3 que un conjunto binario de relaciones de entidades o de relaciones de los que se deriva el esquema: varios a uno entre A y B puede representarse mediante una tabla que consista en los atributos de Conjunto de entidades fuertes. La clave prima- A y en los atributos (si hay alguno) del conjunto ria del conjunto de entidades se convierte en la de relaciones. La clave primaria de la entidad clave primaria de la relación. «varios» se transforma en la clave primaria de la Conjunto de entidades débiles. La tabla y, por relación (es decir, si el conjunto de relaciones es tanto, la relación correspondientes a un conjunto de varios a uno entre A y B, la clave primaria de A de entidades débiles incluyen es la clave primaria de la relación). Para los con- — Los atributos del conjunto de entidades débi- juntos de relaciones de uno a uno la relación se les. construye igual que en el conjunto de relaciones de varios a uno. Sin embargo, cualquiera de las — La clave primaria del conjunto de entidades fuer- claves primarias del conjunto de entidades puede tes del que depende el conjunto de entidades elegirse como clave primaria de la relación, dado débiles. que ambas son claves candidatas. La clave primaria de la relación consiste en la Atributos multivalorados. Recuérdese del Apar- unión de la clave primaria del conjunto de enti- tado 2.9.4 que un atributo multivalorado M se dades fuertes y el discriminante del conjunto de representa mediante una tabla consistente en la entidades débil. clave primaria del conjunto de entidades o de rela- Conjunto de relaciones. La unión de las claves ciones del que M es atributo y en una columna C primarias de los conjuntos de entidades relacio- que guarda un valor concreto de M. La clave pri- nados se transforma en una superclave de la rela- maria del conjunto de entidades o de relaciones 57 FUNDAMENTOS DE BASES DE DATOS junto con el atributo C se convierte en la clave Muchos sistemas de bases de datos proporcionan primaria de la relación. herramientas de diseño con una interfaz gráfica de usua- rio para la creación de diagramas de esquema. A partir de la lista precedente se puede ver que el esquema de una relación puede incluir entre sus atribu- 3.1.5. Lenguajes de consulta tos la clave primaria de otro esquema, digamos r2. Este atributo es una clave externa de r1 que hace referencia Un lenguaje de consulta es un lenguaje en el que un a r2. La relación r1 también se denomina la relación usuario solicita información de la base de datos. Estos referenciante de la dependencia de clave externa, y r2 lenguajes suelen ser de un nivel superior que el de los se denomina la relación referenciada de la clave lenguajes de programación habituales. Los lenguajes de externa. Por ejemplo, el atributo nombre-sucursal de consulta pueden clasificarse como procedimentales o Esquema-cuenta es una clave externa de Esquema- no procedimentales. En los lenguajes procedimenta- cuenta referenciando a Esquema-sucursal, ya que nom- les el usuario instruye al sistema para que lleve a cabo bre-sucursal es la clave primaria de Esquema-sucursal. una serie de operaciones en la base de datos para calcu- En cualquier ejemplar de la base de datos, dada una lar el resultado deseado. En los lenguajes no procedi- tupla ta de la relación cuenta, debe haber alguna tupla mentales el usuario describe la información deseada tb en la relación cuenta tal que el valor del atributo nom- sin dar un procedimiento concreto para obtener esa infor- bre-sucursal de ta sea el mismo que el valor de la clave mación. primaria, nombre-sucursal, de tb. La mayor parte de los sistemas comerciales de bases Es obligado listar los atributos que forman clave pri- de datos relacionales ofrecen un lenguaje de consulta maria de un esquema de relación antes que el resto; por que incluye elementos de los enfoques procedimental ejemplo, el atributo nombre-sucursal de Esquema-sucur- y no procedimental. Se estudiarán varios lenguajes sal se lista en primer lugar, ya que es la clave primaria. comerciales en el Capítulo 4. El Capítulo 5 trata los lenguajes QBE y Datalog, este último parecido a Pro- 3.1.4. Diagramas de esquema log. En este capítulo se examinarán los lenguajes «puros»: Un esquema de bases de datos, junto con las dependen- el álgebra relacional es procedimental, mientras que el cias de clave primaria y externa, se puede mostrar grá- cálculo relacional de tuplas y el de dominios son no pro- ficamente mediante diagramas de esquema. La Figura cedimentales. Estos lenguajes de consulta son rígidos y 3.9 muestra el diagrama de esquema del ejemplo ban- formales, y carecen del «azúcar sintáctico» de los len- cario. Cada relación aparece como un cuadro con los guajes comerciales, pero ilustran las técnicas funda- atributos listados dentro de él y el nombre de la relación mentales para la extracción de datos de las bases de sobre él. Si hay atributos clave primaria, una línea hori- datos. zontal cruza el cuadro con los atributos clave primaria Aunque inicialmente sólo se estudiarán las consul- listados sobre ella. Las dependencias de clave exter- tas, un lenguaje de manipulación de datos completo no na aparecen como flechas desde los atributos clave sólo incluye un lenguaje de consulta, sino también un externa de la relación referenciante a la clave primaria lenguaje para la modificación de las bases de datos. de la relación referenciada. Estos lenguajes incluyen órdenes para insertar y borrar No hay que confundir un diagrama de esquema con tuplas, así como órdenes para modificar partes de las un diagrama E-R. En particular, los diagramas E-R no tuplas existentes. Las modificaciones de las bases de muestran explícitamente los atributos clave externa, datos se examinarán después de completar la discusión mientras que los diagramas de esquema sí. sobre las consultas. sucursal cuenta impositor cliente nombre-sucursal número-cuenta nombre-cliente nombre-cliente ciudad-sucursal nombre-sucursal número-cuenta calle-cliente activos saldo ciudad-cliente préstamo prestatario número-préstamo nombre-cliente nombre-sucursal número-préstamo importe FIGURA 3.9. Diagrama de esquema para el banco. 58 CAPÍTULO 3 EL MODELO RELACIONAL 3.2. EL ÁLGEBRA RELACIONAL El álgebra relacional es un lenguaje de consulta proce- El predicado de selección puede incluir compara- dimental. Consta de un conjunto de operaciones que ciones entre dos atributos. Para ilustrarlo, considérese toman como entrada una o dos relaciones y producen la relación responsable-préstamo, que consta de tres como resultado una nueva relación. Las operaciones atributos: nombre-cliente, nombre-banquero y número- fundamentales del álgebra relacional son selección, pro- préstamo, que especifica que un empleado concreto es yección, unión, diferencia de conjuntos, producto car- el responsable del préstamo concedido a un cliente. Para tesiano y renombramiento. Además de las operaciones hallar todos los clientes que se llaman igual que su res- fundamentales hay otras operaciones, por ejemplo, inter- ponsable de préstamos se puede escribir sección de conjuntos, reunión natural, división y asig- nación. Estas operaciones se definirán en términos de σnombre-cliente = nombre-banquero (responsable-préstamo) las operaciones fundamentales. Dado que el valor especial nulo indica «valor des- 3.2.1. Operaciones fundamentales conocido o inexistente», cualquier comparación que implique a un valor nulo se evalúa como falsa. Las operaciones selección, proyección y renombra- miento se denominan operaciones unarias porque ope- 3.2.1.2. La operación proyección ran sobre una sola relación. Las otras tres operaciones Supóngase que se desea hacer una lista de todos los operan sobre pares de relaciones y se denominan, por números de préstamo y del importe de los mismos, pero lo tanto, operaciones binarias. sin que aparezcan los nombres de las sucursales. La ope- ración proyección permite producir esta relación. La 3.2.1.1. La operación selección operación proyección es una operación unaria que La operación selección selecciona tuplas que satisfacen devuelve su relación de argumentos, excluyendo algu- un predicado dado. Se utiliza la letra griega sigma nos argumentos. Dado que las relaciones son conjun- minúscula (σ) para denotar la selección. El predicado tos, se eliminan todas las filas duplicadas. La proyección aparece como subíndice de σ. La relación del argumento se denota por la letra griega mayúscula pi (Π). Se crea se da entre paréntesis a continuación de σ. Por tanto, una lista de los atributos que se desea que aparezcan en para seleccionar las tuplas de la relación préstamo en el resultado como subíndice de Π. La relación de argu- que la sucursal es «Navacerrada» hay que escribir mentos se escribe a continuación entre paréntesis. Por tanto, la consulta para crear una lista de todos los núme- σnombre-sucursal = «Navacerrada» ( préstamo) ros de préstamo y del importe de los mismos puede escribirse como Si la relación préstamo es como se muestra en la Figura 3.6, la relación que resulta de la consulta anterior es Πnúmero-préstamo, importe ( préstamo) como se muestra en la Figura 3.10. Se pueden buscar todas las tuplas en las que el La relación que resulta de esta consulta se muestra en importe prestado sea mayor que 1.200 € escribiendo la Figura 3.11. σimporte>1200 ( préstamo) 3.2.1.3. Composición de operaciones relacionales En general, se permiten las comparaciones que uti- lizan =, ≠, o ≥ en el predicado de selección. Ade- Es importante el hecho de que el resultado de una ope- más, se pueden combinar varios predicados en uno ración relacional sea también una relación. Considérese mayor utilizando las conectivas y (∧) y o (∨). Por tanto, la consulta más compleja «Encontrar los clientes que para encontrar las tuplas correspondientes a préstamos viven en Peguerinos». Hay que escribir: de más de 1.200 € concedidos por la sucursal de Nava- cerrada, se escribe número-préstamo importe σnombre-sucursal = «Navacerrada» ∧ importe>1200 ( préstamo) P-11 900 P-14 1.500 P-15 1.500 número-préstamo nombre-sucursal importe P-16 1.300 P-15 Navacerrada 1.500 P-17 1.000 P-16 Navacerrada 1.300 P-23 2.000 P-93 500 FIGURA 3.10. Resultado de σnombre-sucursal = «Navacerrada» (prés- tamo). FIGURA 3.11. Números de préstamo y sus importes. 59 FUNDAMENTOS DE BASES DE DATOS Πnombre-cliente (σciudad-cliente = «Peguerinos» (cliente)) nombre-cliente Abril Téngase en cuenta que, en vez de dar en el argumento Fernández de la operación proyección el nombre de una relación, Gómez se da una expresión que se evalúa como una relación. González En general, dado que el resultado de una operación López Pérez del álgebra relacional es del mismo tipo (relación) que Rupérez los datos de entrada, las operaciones del álgebra rela- Santos cional pueden componerse para formar una expresión Sotoca del álgebra relacional. La composición de operacio- Valdivieso nes del álgebra relacional para formar expresiones del álgebra relacional es igual que la composición de ope- FIGURA 3.12. Nombres de todos los clientes que tienen un préstamo o una cuenta. raciones aritméticas (como +, –, * y ÷) para formar expresiones aritméticas. La definición formal de las expresiones de álgebra relacional se estudia en el Apar- tado 3.2.2. ciones préstamo y prestatario. La primera es una rela- ción con tres atributos, la segunda sólo tiene dos. Más 3.2.1.4. La operación unión aún, considérese la unión de un conjunto de nombres de clientes y de un conjunto de ciudades. Una unión así Considérese una consulta para averiguar el nombre de no tendría sentido en la mayor parte de los casos. Por todos los clientes del banco que tienen una cuenta, un tanto, para que una operación unión r ∪ s sea válida hay préstamo o ambas cosas. Obsérvese que la relación que exigir que se cumplan dos condiciones: cliente no contiene esa información, dado que los clien- tes no necesitan tener ni cuenta ni préstamo en el banco. 1. Las relaciones r y s deben ser de la misma aridad. Para contestar a esta consulta hace falta la información Es decir, deben tener el mismo número de atributos. de la relación impositor (Figura 3.5) y la de la relación prestatario (Figura 3.7). Se conoce la manera de averi- 2. Los dominios de los atributos i-ésimos de r y de s guar los nombres de todos los clientes con préstamos deben ser iguales para todo i. en el banco: Téngase en cuenta que r y s pueden ser, en general, Πnombre-cliente ( prestatario) relaciones temporales que sean resultado de expresio- nes del álgebra relacional. También se conoce la manera de averiguar el nombre de los clientes con cuenta en el banco: 3.2.1.5. La operación diferencia de conjuntos La operación diferencia de conjuntos, denotada por –, Πnombre-cliente (impositor) permite buscar las tuplas que estén en una relación pero no en la otra. La expresión r – s da como resultado una Para contestar a la consulta hace falta la unión de estos relación que contiene las tuplas que están en r pero no dos conjuntos; es decir, hacen falta todos los nombres en s. de clientes que aparecen en alguna de las dos relacio- Se pueden buscar todos los clientes del banco que nes o en ambas. Estos datos se pueden averiguar tienen abierta una cuenta pero no tienen concedido nin- mediante la operación binaria unión, denotada, como gún préstamo escribiendo en la teoría de conjuntos, por ∪. Por tanto, la expresión buscada es Πnombre-cliente (impositor) – Πnombre-cliente ( prestatario) Πnombre-cliente ( prestatario) ∪ Πnombre-cliente (impositor) La relación resultante de esta consulta aparece en la Figura 3.13. La relación resultante de esta consulta aparece en la Como en el caso de la operación unión, hay que ase- Figura 3.10. Téngase en cuenta que en el resultado hay gurarse de que las diferencias de conjuntos se realicen diez tuplas, aunque hay siete prestatarios y seis impo- entre relaciones compatibles. Por tanto, para que una sitores distintos. Esta discrepancia aparente se debe a que Gómez, Santos y López son a la vez prestatarios e impositores. Dado que las relaciones son conjuntos, se nombre-cliente eliminan los valores duplicados. Obsérvese que en este ejemplo se toma la unión de Abril González dos conjuntos, ambos consistentes en valores de nom- Rupérez bre-cliente. En general, se debe asegurar que las unio- nes se realicen entre relaciones compatibles. Por FIGURA 3.13. Clientes con cuenta abierta pero sin prés- ejemplo, no tendría sentido realizar la unión de las rela- tamo concedido. 60 CAPÍTULO 3 EL MODELO RELACIONAL operación diferencia de conjuntos r – s sea válida hay Supóngase que se tienen n1 tuplas en prestatario y n2 que exigir que las relaciones r y s sean de la misma ari- tuplas en préstamo. Por tanto, hay n1 * n2 maneras de esco- dad y que los dominios de los atributos i-ésimos de r y ger un par de tuplas, una tupla de cada relación; por lo s sean iguales. que hay n1 * n2 tuplas en r. En concreto, obsérvese que para algunas tuplas t de r puede ocurrir que t[prestata- 3.2.1.6. La operación producto cartesiano rio.número-préstamo] ≠ t[préstamo.número-préstamo]. En general, si se tienen las relaciones r1 (R1) y r2 (R2), La operación producto cartesiano, denotada por un r1 × r2 es una relación cuyo esquema es la concatena- aspa (×), permite combinar información de cualesquiera ción de R1 y de R2. La relación R contiene todas las dos relaciones. El producto cartesiano de las relaciones tuplas t para las que hay unas tuplas t1 en r1 y t2 en r2 r1 y r2 como r1 × r2. para las que t[R1] = t1[R1] y t[R2] = t2[R2]. Recuérdese que las relaciones se definen como sub- Supóngase que se desea averiguar los nombres de conjuntos del producto cartesiano de un conjunto de todos los clientes que tienen concedido un préstamo en dominios. A partir de esta definición ya se debe tener la sucursal de Navacerrada. Se necesita para ello infor- una intuición sobre la definición de la operación pro- mación de las relaciones préstamo y prestatario. Si se ducto cartesiano. Sin embargo, dado que el mismo nom- escribe bre de atributo puede aparecer tanto en r1 como en r2, hay que crear un esquema de denominaciones para dis- tinguir entre ambos atributos. En este caso se logra σnombre-sucursal = «Navacerrada» ( prestatario × préstamo) adjuntando al atributo el nombre de la relación de la que entonces el resultado es la relación mostrada en la Figura proviene originalmente. Por ejemplo, el esquema de 3.15. Se tiene una relación que sólo atañe a la sucursal relación de r = prestatario × préstamo es de Navacerrada. Sin embargo, la columna nombre- (prestatario.nombre-cliente, prestatario.número- cliente puede contener clientes que no tengan conce- préstamo, préstamo.nombre-sucursal, prés- dido ningún préstamo en la sucursal de Navacerrada. tamo.número-préstamo, préstamo.importe) (Si no se ve el motivo por el que esto es cierto, recuér- dese que el producto cartesiano toma todos los empa- Con este esquema se puede distinguir entre prestata- rejamientos posibles de una tupla de prestatario con una rio.número-préstamo y préstamo.número-préstamo. tupla de préstamo.) Para los atributos que sólo aparecen en uno de los dos Dado que la operación producto cartesiano asocia esquemas se suele omitir el prefijo con el nombre de la todas las tuplas de préstamo con todas las tuplas de pres- relación. Esta simplificación no genera ambigüedad tatario, se sabe que, si un cliente tiene concedido un alguna. Por tanto, se puede escribir el esquema de rela- préstamo en la sucursal de Navacerrada, hay alguna ción de r como tupla de prestatario × préstamo que contiene su nom- bre y que prestatario.número-préstamo = préstamo.nú- (nombre-cliente, prestatario.número-préstamo, mero-préstamo. Por tanto, si escribimos nombre-sucursal, préstamo.número-préstamo, σprestatario.número-préstamo = préstamo.número-préstamo importe) (σnombre-sucursal = «Navacerrada» ( prestatario × préstamo)) El acuerdo de denominaciones precedente exige que las relaciones que sean argumentos de la operación pro- sólo se obtienen las tuplas de prestatario × préstamo ducto cartesiano tengan nombres diferentes. Esta exi- que corresponden a los clientes que tienen concedido gencia causa problemas en algunos casos, como cuando un préstamo en la sucursal de Navacerrada. se desea calcular el producto cartesiano de una relación Finalmente, dado que sólo se desea obtener nombre- consigo misma. Se produce un problema similar si se cliente, se realiza una proyección: utiliza el resultado de una expresión del álgebra rela- cional en un producto cartesiano, dado que hará falta Πnombre-cliente (σprestatario.número-préstamo = préstamo.número-préstamo un nombre para la relación para poder hacer referencia (σnombre-sucursal = «Navacerrada» ( prestatario × a sus atributos. En el Apartado 3.2.1.7 se verá la manera préstamo))) de evitar estos problemas utilizando una operación renombramiento. El resultado de esta expresión se muestra en la Figura Ahora que se conoce el esquema de relación de r = 3.16 y es la respuesta correcta a la consulta formulada. prestatario × préstamo hay que averiguar las tuplas que aparecerán en r. Como se podía imaginar, se crea una 3.2.1.7. La operación renombramiento tupla de r a partir de cada par de tuplas posible: una de la relación prestatario y otra de la relación préstamo. A diferencia de las relaciones de la base de datos, los Por tanto, r es una relación de gran tamaño, como se resultados de las expresiones de álgebra relacional no puede ver en la Figura 3.14, donde sólo se ha incluido tienen un nombre que se pueda utilizar para referirse a una parte de las tuplas que forman parte de r. ellas. Resulta útil poder ponerles nombre; el operador 61 FUNDAMENTOS DE BASES DE DATOS nombre-cliente prestatario.número-préstamo préstamo.número-préstamo nombre-sucursal importe Santos P-17 P-11 Collado Mediano 900 Santos P-17 P-14 Centro 1.500 Santos P-17 P-15 Navacerrada 1.500 Santos P-17 P-16 Navacerrada 1.300 Santos P-17 P-17 Centro 1.000 Santos P-17 P-23 Moralzarzal 2.000 Santos P-17 P-93 Becerril 500 Gómez P-23 P-11 Collado Mediano 900 Gómez P-23 P-14 Centro 1.500 Gómez P-23 P-15 Navacerrada 1.500 Gómez P-23 P-16 Navacerrada 1.300 Gómez P-23 P-17 Centro 1.000 Gómez P-23 P-23 Moralzarzal 2.000 Gómez P-23 P-93 Becerril 500 López P-15 P-11 Collado Mediano 900 López P-15 P-14 Centro 1.500 López P-15 P-15 Navacerrada 1.500 López P-15 P-16 Navacerrada 1.300 López P-15 P-17 Centro 1.000 López P-15 P-23 Moralzarzal 2.000 López P-15 P-93 Becerril 500 … … … … … … … … … … … … … … … Valdivieso P-17 P-11 Collado Mediano 900 Valdivieso P-17 P-14 Centro 1.500 Valdivieso P-17 P-15 Navacerrada 1.500 Valdivieso P-17 P-16 Navacerrada 1.300 Valdivieso P-17 P-17 Centro 1.000 Valdivieso P-17 P-23 Moralzarzal 2.000 Valdivieso P-17 P-93 Becerril 500 Fernández P-16 P-11 Collado Mediano 900 Fernández P-16 P-14 Centro 1.500 Fernández P-16 P-15 Navacerrada 1.500 Fernández P-16 P-16 Navacerrada 1.300 Fernández P-16 P-17 Centro 1.000 Fernández P-16 P-23 Moralzarzal 2.000 Fernández P-16 P-93 Becerril 500 FIGURA 3.14. Resultado de prestatario × préstamo. nombre-cliente prestatario.número-préstamo préstamo.número-préstamo nombre-sucursal importe Santos P-17 P-15 Navacerrada 1.500 Santos P-17 P-16 Navacerrada 1.300 Gómez P-23 P-15 Navacerrada 1.500 Gómez P-23 P-16 Navacerrada 1.300 López P-15 P-15 Navacerrada 1.500 López P-15 P-16 Navacerrada 1.300 Sotoca P-14 P-15 Navacerrada 1.500 Sotoca P-14 P-16 Navacerrada 1.300 Pérez P-93 P-15 Navacerrada 1.500 Pérez P-93 P-16 Navacerrada 1.300 Gómez P-11 P-15 Navacerrada 1.500 Gómez P-11 P-16 Navacerrada 1.300 Valdivieso P-17 P-15 Navacerrada 1.500 Valdivieso P-17 P-16 Navacerrada 1.300 Fernández P-16 P-15 Navacerrada 1.500 Fernández P-16 P-16 Navacerrada 1.300 FIGURA 3.15. Resultado de σnombre-sucursal = «Navacerrada» (prestatario × préstamo). 62 CAPÍTULO 3 EL MODELO RELACIONAL nombre-cliente saldo Férnandez 500 López 400 700 FIGURA 3.16. Resultado de Πnombre-cliente (σprestatario.número- 750 (σnombre-sucursal = «Navacerrada» préstamo = préstamo.número-préstamo 350 (prestatario × préstamo))). FIGURA 3.17. Resultado de la subexpresión Πcuenta-saldo (σcuenta-saldo < d.saldo (cuenta × ρd (cuenta))). renombramiento, denotado por la letra griega rho minúscula (ρ), permite realizar esta tarea. Dada una Paso 2: La consulta para averiguar el máximo saldo expresión E del álgebra relacional, la expresión de cuenta del banco puede escribirse de la manera siguiente: ρx (E) devuelve el resultado de la expresión E con el nombre x. Πsaldo (cuenta) – Πcuenta.saldo (σcuenta.saldo < d.saldo Las relaciones r por sí mismas se consideran expre- (cuenta × ρd (cuenta))) siones (triviales) del álgebra relacional. Por tanto, tam- bién se puede aplicar la operación renombramiento a En la Figura 3.18 se muestra el resultado de esta con- una relación r para obtener la misma relación con un sulta. nombre nuevo. Considérese la siguiente consulta como un nuevo Otra forma de la operación renombramiento es la ejemplo de la operación renombramiento: «Averiguar siguiente. Supóngase que una expresión del álgebra rela- los nombres de todos los clientes que viven en la misma cional E tiene aridad n. Por tanto, la expresión calle y en la misma ciudad que Gómez». Se puede obte- ner la calle y la ciudad en la que vive Gómez escribiendo ρx (A1, A2, … An) (E) Πcalle-cliente, ciudad-cliente (σnombre-cliente = «Gómez» (cliente)) devuelve el resultado de la expresión E con el nombre x y con los atributos con el nombre cambiado a A1, A2, Sin embargo, para hallar a otros clientes que vivan …, An. en esa calle y en esa ciudad hay que hacer referencia Para ilustrar el uso del renombramiento de las rela- por segunda vez a la relación cliente. En la consulta ciones, considérese la consulta «Buscar el máximo saldo siguiente se utiliza la operación renombramiento sobre de cuenta del banco». La estrategia empleada para obte- la expresión anterior para darle al resultado el nombre ner el resultado es 1) calcular una relación intermedia dirección-Gómez y para cambiar el nombre de los atri- consistente en los saldos que no son el máximo y 2) rea- butos a calle y ciudad en lugar de calle-cliente y ciu- lizar la diferencia entre la relación Πsaldo (cuenta) y la dad-cliente: relación intermedia recién calculada. Paso 1: Para calcular la relación intermedia hay que Πcliente.nombre-cliente (σcliente.calle-cliente = dirección-Gómez ∧ comparar los valores de los saldos de todas las cuentas. cliente.ciudad-cliente = dirección-Gómez. ciudad (cliente × Esta comparación se puede hacer calculando el producto ρdirección-Gómez (calle, ciudad) (Πcalle-cliente, ciudad-cliente cartesiano cuenta × cuenta y formando una selección para comparar el valor de cualesquiera dos saldos que (σnombre-cliente = «Gómez» (cliente))))) aparezcan en una tupla. En primer lugar hay que crear un mecanismo para distinguir entre los dos atributos saldo. Se utilizará la operación renombramiento para El resultado de esta consulta, cuando se aplica a la rela- cambiar el nombre de una referencia a la relación cuenta; ción cliente de la Figura 3.4, se muestra en la Figura así, se puede hacer referencia dos veces a la relación sin 3.19. ambigüedad alguna. La operación renombramiento no es estrictamente La relación temporal que se compone de los saldos necesaria, dado que es posible utilizar una notación posi- que no son el máximo puede escribirse ahora como cional para los atributos. Se pueden nombrar los atri- butos de una relación de manera implícita utilizando Πcuenta.saldo (σcuenta.saldo < d.saldo (cuenta × ρd (cuenta))) una notación posicional, donde $1, $2, … hagan refe- Esta expresión proporciona los saldos de la rela- ción cuenta para los que aparece un saldo mayor saldo en alguna parte de la relación cuenta (cuyo nombre se 900 ha cambiado a d). El resultado contiene todos los sal- dos salvo el máximo. Esta relación se muestra en la FIGURA 3.18. Saldo máximo de las cuentas del Figura 3.17. banco. 63 FUNDAMENTOS DE BASES DE DATOS nombre-cliente 3.2.3. Otras operaciones Gómez Pérez Las operaciones fundamentales del álgebra relacio- nal son suficientes para expresar cualquier consulta del FIGURA 3.19. Los clientes que viven en la misma calle álgebra relacional1. Sin embargo, si uno se limita úni- y en la misma ciudad que Gómez. camente a las operaciones fundamentales, algunas con- sultas habituales resultan de expresión intrincada. Por tanto, se definen otras operaciones que no añaden poten- rencia al primer atributo, al segundo, etcétera. La nota- cia al álgebra, pero que simplifican las consultas habi- ción posicional también se aplica a los resultados de las tuales. Para cada operación nueva se facilita una operaciones del álgebra relacional. La siguiente expre- expresión equivalente utilizando sólo las operaciones sión del álgebra relacional ilustra el uso de la notación fundamentales. posicional con el operador unario σ: σ $2=$3 (R × R ) 3.2.3.1. La operación intersección de conjuntos La primera operación adicional del álgebra relacional Si una operación binaria necesita distinguir entre las dos que se definirá es la intersección de conjuntos (∩). relaciones que son sus operandos, se puede utilizar una Supóngase que se desea averiguar todos los clientes que notación posicional parecida para los nombres de las tienen un préstamo concedido y una cuenta abierta. Uti- relaciones. Por ejemplo, $R1 puede hacer referencia al lizando la intersección de conjuntos se puede escribir primer operando y $R2, al segundo. Sin embargo, la notación posicional no resulta conveniente para las per- Πnombre-cliente ( prestatario) ∩ Πnombre-cliente (impositor) sonas, dado que la posición del atributo es un número en vez de un nombre de atributo fácil de recordar. Por La relación resultante de esta consulta aparece en la tanto, en este libro no se utiliza la notación posicional. Figura 3.20. Obsérvese que se puede volver a escribir cualquier expresión del álgebra relacional utilizando la intersec- 3.2.2. Definición formal del álgebra relacional ción de conjuntos sustituyendo la operación intersección Las operaciones que se vieron en el Apartado 3.2.1 per- por un par de operaciones de diferencia de conjuntos, miten dar una definición completa de las expresiones de la manera siguiente: del álgebra relacional. Las expresiones fundamentales del álgebra relacional se componen de alguna de las r ∩ s = r – (r – s) siguientes: Por tanto, la intersección de conjuntos no es una ope- ración fundamental y no añade potencia al álgebra rela- Una relación de la base de datos cional. Sencillamente, es más conveniente escribir r ∩ Una relación constante s que r – (r – s). Una relación constante se escribe listando sus tuplas 3.2.3.2. La operación reunión natural entre llaves ({}), por ejemplo {(C-101,Centro,500) (C- Suele resultar deseable simplificar ciertas consultas que 215, Becerril, 700)}. exigen un producto cartesiano. Generalmente, las con- Las expresiones generales del álgebra relacional se sultas que implican un producto cartesiano incluyen un construyen a partir de subexpresiones menores. Sean E1 operador selección sobre el resultado del producto car- y E2 expresiones de álgebra relacional. Todas las siguien- tesiano. Considérese la consulta «Hallar los nombres de tes son expresiones del álgebra relacional: todos los clientes que tienen concedido un préstamo en el banco y averiguar el importe del mismo». En primer E1 ∪ E2 lugar se calcula el producto cartesiano de las relaciones E1 – E2 prestatario y préstamo. Luego, se seleccionan las tuplas E1 × E2 que sólo atañen al mismo número-préstamo, seguidas σP(E1), donde P es un predicado de atributos de E1 por la proyección de nombre-cliente, número-préstamo e importe resultantes: ΠS (E1), donde S es una lista que se compone de algunos de los atributos de E1 Πnombre-cliente, préstamo.número-préstamo, importe ρx (E1), donde x es el nuevo nombre del resultado (σprestatario.número-préstamo = préstamo.número-préstamo de E1. ( prestatario × préstamo)) 1 En el Apartado 3.3 se introducen las operaciones que extienden la potencia del álgebra relacional al tratamiento de los valores nulos y los valores de agregación. 64 CAPÍTULO 3 EL MODELO RELACIONAL nombre-cliente S se denotan por R – S, mientras que S – R denota los Gómez nombres de los atributos que aparecen en S pero no en Pérez R. Obsérvese que las operaciones unión, intersección y Santos diferencia aquí operan sobre conjuntos de atributos, y no sobre relaciones. FIGURA 3.20. Clientes con una cuenta abierta y un Ahora se está preparado para una definición formal préstamo en el banco de la reunión natural. Considérense dos relaciones r(R) y s(S). La reunión natural de r y de s, denotada por r s es una relación del esquema R ∪ S definida for- La reunión natural es una operación binaria que per- malmente de la manera siguiente: mite combinar ciertas selecciones y un producto carte- siano en una sola operación. Se denota por el símbolo r s = ΠR ∪ S (σr.A = s.A ∧ r.A = de la «reunión». La operación reunión natural forma 1 1 2 un producto cartesiano de sus dos argumentos, realiza s.A 2 ∧ … ∧ r.An = s.An r × s) una selección forzando la igualdad de los atributos que donde R ∩ S = {A1, A2, …, An}. aparecen en ambos esquemas de relación y, finalmente, Como la reunión natural es fundamental para gran elimina los atributos duplicados. parte de la teoría y de la práctica de las bases de datos Aunque la definición de la reunión natural es com- relacionales, se ofrecen varios ejemplos de su uso. pleja, la operación es sencilla de aplicar. Como ilustra- ción, considérese nuevamente el ejemplo «Averiguar Hallar los nombres de todas las sucursales con los nombres de todos los clientes que tienen concedido clientes que tienen una cuenta abierta en el banco un préstamo en el banco y averiguar su importe». Esta y que viven en Peguerinos. consulta puede expresarse utilizando la reunión natural de la manera siguiente: Πnombre-sucursal (σciudad-cliente = «Peguerinos» (cliente cuenta impositor)) Πnombre-cliente, número-préstamo, importe ( prestatario préstamo) La relación resultante de esta consulta aparece en Dado que los esquemas de prestatario y de préstamo la Figura 3.22. (es decir, Esquema-prestatario y Esquema-préstamo) Obsérvese que se escribió cliente cuenta tienen en común el atributo número-préstamo, la ope- impositor sin añadir paréntesis para especificar el ración reunión natural sólo considera los pares de tuplas orden en que se deben ejecutar las operaciones reu- que tienen el mismo valor de número-préstamo. Esta nión natural de las tres relaciones. En el caso ante- operación combina cada uno de estos pares en una sola rior hay dos posibilidades: tupla en la unión de los dos esquemas (es decir, nom- — (cliente cuenta) impositor bre-cliente, nombre-sucursal, número-préstamo, im- — cliente (cuenta impositor) porte). Después de realizar la proyección, se obtiene la relación mostrada en la Figura 3.21. No se especificó la expresión deseada porque las Considérense dos esquemas de relación R y S que dos son equivalentes. Es decir, la reunión natural son, por supuesto, listas de nombres de atributos. Si se es asociativa. consideran los esquemas como conjuntos, en vez de como listas, se pueden denotar los nombres de los atri- Hallar todos los clientes que tienen una cuenta butos que aparecen tanto en R como en S mediante R ∩ abierta y un préstamo concedido en el banco. S, y los nombres de los atributos que aparecen en R, en Πnombre-cliente ( prestatario impositor) S o en ambos mediante R ∪ S. De manera parecida, los nombres de los atributos que aparecen en R pero no en Obsérvese que en el Apartado 3.2.3.1 se escribió una expresión para esta consulta utilizando la inter- sección de conjuntos. Aquí se repite esa expresión. nombre-cliente número-préstamo importe Πnombre-cliente ( prestatario) ∩ Πnombre-cliente (impositor) Fernández P-16 1.300 Gómez P-23 2.000 Gómez P-11 900 López P-15 1.500 Pérez P-93 500 nombre-sucursal Santos P-17 1.000 Sotoca P-14 1.500 Galapagar Valdivieso P-17 1.000 Navacerrada FIGURA 3.21. Resultado de Πnombre-cliente, número-préstamo, FIGURA 3.22. Resultado de Πnombre-sucursal (σ ciudad-cliente = (prestatario préstamo). importe (cliente cuenta impositor )). «Peguerinos» 65 FUNDAMENTOS DE BASES DE DATOS La relación resultante de esta consulta se mostró ante- nombre-cliente nombre-sucursal riormente en la Figura 3.20. Este ejemplo ilustra una Abril Collado Mediano realidad común del álgebra relacional: se pueden Gómez Becerril escribir varias expresiones del álgebra relacional González Centro equivalentes que sean bastante diferentes entre sí. González Galapagar López Navacerrada Rupérez Moralzarzal Sean r(R) y s (S) relaciones sin atributos en común; Santos Galapagar es decir, R ∩ S = Ø. (Ø denota el conjunto vacío.) Valdivieso Navacerrada Por tanto, r s = r × s. FIGURA 3.24. Resultado de Πnombre-cliente, nombre-sucursal La operación reunión zeta es una extensión de la ope- (impositor cuenta)). ración reunión natural que permite combinar una selec- ción y un producto cartesiano en una sola operación. Considérense las relaciones r(R) y s(S), y sea θ un pre- Formalmente, sean r(R) y s(S) relaciones y S ⊆ R; es dicado de los atributos del esquema R ∪ S. La opera- decir, todos los atributos del esquema S están también ción reunión zeta r θ s se define de la manera en el esquema R. La relación r ÷ s es una relación del siguiente: esquema R – S (es decir, del esquema que contiene todos r θ s = σθ (r × s) los atributos del esquema R que no están en el esquema S). Una tupla t está en r ÷s si y sólo si se cumplen estas 3.2.3.3. La operación división dos condiciones: La operación división, denotada por ÷, resulta adecuada 1. t está en ΠR – S (r) para las consultas que incluyen la expresión «para todos». Supóngase que se desea hallar a todos los clien- 2. Para cada tupla tS de s hay una tupla tr de r que tes que tengan abierta una cuenta en todas las sucursa- cumple las dos condiciones siguientes: les ubicadas en Arganzuela. Se pueden obtener todas a. tr[S] = ts[S] las sucursales de Arganzuela mediante la expresión b. tr[R – S] = t r1 = Πnombre-sucursal (σciudad-sucursal = «Arganzuela» (sucursal)) Puede resultar sorprendente descubrir que, dados una operación división y los esquemas de las relaciones, se La relación resultante de esta expresión aparece en la puede, de hecho, definir la operación división en tér- Figura 3.23. minos de las operaciones fundamentales. Sean r(R) y Se pueden encontrar todos los pares (nombre-cliente, s(S) dadas, con S ⊆ R: nombre-sucursal) para los que el cliente tiene una cuenta en una sucursal escribiendo r ÷ s = ΠR – S (r) – ΠR – S ((ΠR – S (r) × s) – ΠR – S, S (r)) Para comprobar que esta expresión es verdadera, obsér- r2 = Πnombre-cliente, nombre-sucursal (impositor cuenta) vese que ΠR – S (r) da todas las tuplas t que cumplen la primera condición de la definición de la división. La La Figura 3.24 muestra la relación resultante de esta expresión del lado derecho del operador diferencia de expresión. conjuntos, Ahora hay que hallar los clientes que aparecen en r2 con los nombres de todas las sucursales de r1. La ope- ΠR – S ((ΠR – S (r) × s) – ΠR – S, S (r)), ración que proporciona exactamente esos clientes es la operación división. La consulta se formula escribiendo sirve para borrar esas tuplas que no cumplen la segunda condición de la definición de la división. Esto se logra Πnombre-cliente, nombre-sucursal (impositor cuenta) de la manera siguiente. Considérese ΠR – S (r) × s. Esta ÷ Πnombre-sucursal (σciudad-sucursal = «Arganzuela» (sucursal)) relación está en el esquema R y empareja cada tupla de ΠR – S (r) con cada tupla de s. La expresión ΠR – S, S (r) El resultado de esta expresión es una relación que tiene sólo reordena los atributos de r. el esquema (nombre-cliente) y que contiene la tupla Por tanto, (ΠR – S (r) × s) – ΠR – S, S (r) genera los pares (González). de tuplas de ΠR – S (r) y de s que no aparecen en r. Si una tupla tj está en nombre-sucursal ΠR – S ((ΠR – S (r) × s) – ΠR – S, S (r)), Centro Galapagar hay alguna tupla ts de s que no se combina con la tupla tj para formar una tupla de r. Por tanto, tj guarda un valor FIGURA 3.22. Resultado de Πnombre-sucursal (σ ciudad-sucursal = de los atributos R – S que no aparece en r ÷ s. Estos «Arganzuela» (sucursal)). valores son los que se eliminan de ΠR – S (r). 66 CAPÍTULO 3 EL MODELO RELACIONAL 3.2.3.4. La operación asignación resultado de la expresión a la derecha de ← se asigna En ocasiones resulta conveniente escribir una expresión a la variable relación a la izquierda de ←. Esta varia- del álgebra relacional por partes utilizando la asigna- ble relación puede utilizarse en expresiones posterio- ción a una variable de relación temporal. La operación res. asignación, denotada por ←, actúa de manera parecida Con la operación asignación se pueden escribir las a la asignación de los lenguajes de programación. Para consultas como programas secuenciales consistentes en ilustrar esta operación, considérese la definición de la una serie de asignaciones seguida de una expresión cuyo división dada en el Apartado 3.2.3.3. Se puede escribir valor se muestra como resultado de la consulta. En las r ÷ s como consultas del álgebra relacional la asignación siempre debe hacerse a una variable de relación intermedia. Las temp1 ← ΠR – S (r) asignaciones a relaciones permanentes constituyen una temp2 ← ΠR – S ((temp1 × s) – ΠR – S, S (r)) modificación de la base de datos. Este asunto se discu- resultado = temp1 – temp2 tirá en el Apartado 3.4. Obsérvese que la operación asig- nación no añade potencia alguna al álgebra. Resulta, sin La evaluación de una asignación no hace que se mues- embargo, una manera conveniente de expresar las con- tre ninguna relación al usuario. Por el contrario, el sultas complejas. 3.3. OPERACIONES DEL ÁLGEBRA RELACIONAL EXTENDIDA Las operaciones básicas del álgebra relacional se han hasta el momento presente (el saldo-crédito de la ampliado de varias maneras. Una ampliación sencilla cuenta). Si se desea averiguar el importe disponible por es permitir operaciones aritméticas como parte de la cada persona, se puede escribir la expresión siguiente: proyección. Una ampliación importante es permitir ope- raciones de agregación, como el cálculo de la suma de Πnombre-cliente, límite - saldo-crédito (información-crédito) los elementos de un conjunto, o su media. Otra amplia- ción importante es la operación reunión externa, que El atributo resultante de la expresión límite – saldo-cré- permite a las expresiones del álgebra relacional traba- dito no tiene un nombre. Se puede aplicar la operación jar con los valores nulos que modelan la información renombramiento al resultado de la proyección genera- que falta. lizada para darle un nombre. Como conveniencia nota- cional, el renombramiento de atributos se puede 3.3.1. Proyección generalizada combinar con la proyección generalizada como se ilus- tra a continuación: La operación proyección generalizada amplía la ope- ración proyección permitiendo que se utilicen funcio- Πnombre-cliente, (límite – saldo-crédito) as crédito-disponible nes aritméticas en la lista de proyección. La operación (información-crédito) proyección generalizada tiene la forma Al segundo atributo de esta proyección generalizada se ΠF , F , …, F (E) le ha dado el nombre crédito-disponible. En la Figura 1 2 n 3.26 se muestra el resultado de aplicar esta expresión a donde E es cualquier expresión del álgebra relacional y la relación de la Figura 3.25. F1, F2, …, Fn son expresiones aritméticas que incluyen constantes y atributos en el esquema de E. Como caso especial la expresión aritmética puede ser simplemente 3.3.2. Funciones de agregación un atributo o una constante. Las funciones de agregación son funciones que toman Por ejemplo, supóngase que se dispone de una rela- una colección de valores y devuelven como resultado ción información-crédito, como se muestra en la Figura un único valor. Por ejemplo, la función de agregación 3.25, que da el límite de crédito y el importe dispuesto nombre-cliente crédito-disponible nombre-cliente límite saldo-crédito Gómez 1.600 Gómez 2.000 400 López 0 López 1.500 1.500 Pérez 250 Pérez 2.000 1.750 Santos 5.300 Santos 6.000 700 FIGURA 3.26. Resultado de Πnombre-cliente, (límite – saldo-crédito) FIGURA 3.25. La relación información-crédito. (información-crédito). as crédito-disponible 67 FUNDAMENTOS DE BASES DE DATOS sum toma un conjunto de valores y devuelve la suma bajo-por-horas». En este caso, el nombre de cada sucur- de los mismos. Por tanto, la función sum aplicada a la sal sólo se cuenta una vez, independientemente del colección número de empleados que trabajen en la misma. Esta consulta se escribe de la manera siguiente: {1, 1, 3, 4, 4, 11} Gcount-distinct(nombre-sucursal) (trabajo-por-horas) devuelve el valor 24. La función de agregación avg de- vuelve la media de los valores. Cuando se aplica al con- Para la relación mostrada en la Figura 3.27 el resultado junto anterior devuelve el valor 4. La función de de esta consulta es el valor 3. agregación count devuelve el número de elementos del Supóngase que se desea hallar la suma total de suel- conjunto, y devolvería 6 en el caso anterior. Otras fun- dos de todos los empleados a tiempo parcial en cada ciones de agregación habituales son min y max, que sucursal del banco por separado, en lugar de hallar la devuelven el valor mínimo y el máximo de la colección; suma de sueldos de todo el banco. Para ello hay que en el ejemplo anterior devuelven 1 y 11, respectiva- dividir la relación trabajo-por-horas en grupos basa- mente. dos en la sucursal y aplicar la función de agregación a Las colecciones en las que operan las funciones de cada grupo. agregación pueden tener valores repetidos; el orden en La expresión siguiente obtiene el resultado deseado el que aparezcan los valores no tiene importancia. Estas utilizando el operador de agregación G: colecciones se denominan multiconjuntos. Los con- juntos son un caso especial de los multiconjuntos, en nombre-sucursal Gsum(sueldo) (trabajo-por-horas) los que sólo hay una copia de cada elemento. Para ilustrar el concepto de agregación se utilizará El atributo nombre-sucursal subíndice a la izquierda la relación trabajo-por-horas descrita en la Figura 3.27, de G indica que la relación de entrada trabajo-por- que muestra los empleados a tiempo parcial. Supóngase horas debe dividirse en grupos de acuerdo con el valor que se desea averiguar la suma total de los sueldos de de nombre-sucursal. Los grupos resultantes se mues- los empleados del banco a tiempo parcial. La expresión tran en la Figura 3.28. La expresión sum(sueldo) en del álgebra relacional para esta consulta es: el subíndice derecho de G indica que, para cada grupo de tuplas (es decir, para cada sucursal) hay que apli- Gsum(sueldo) (trabajo-por-horas) car la función de agregación sum al conjunto de valo- res del atributo sueldo. La relación resultante consiste El símbolo G es la letra G en el tipo de letra caligráfico; en las tuplas con el nombre de la sucursal y la suma se lee «G caligráfica». La operación del álgebra rela- de los sueldos de la sucursal, como se muestra en la cional G significa que se debe aplicar agregación, y el Figura 3.29. subíndice indica la operación de agregación a aplicar. La forma general de la opera