Sie sind auf Seite 1von 10

FUNDAMENTOS BASES DE DATOS DATOS DE LA ASIGNATURA Nombre de la asignatura: Carrera: Clave de la asignatura: Horas teora-horas prctica-crditos Fundamentos de bases

de datos Ingeniera en tecnologas de la informacin AEF - 1031 3-2-5

UNIDAD 5 LGEBRA RELACIONAL..................................................................................................1 5.1OPERACIONES FUNDAMENTALES DEL ALGEBRA RELACIONAL................................1 5.2OTRAS OPERACIONES.............................................................................................................7 5.3ALGEBRA RELACIONAL EXTENDIDA.................................................................................8 5.4VALORES NULOS......................................................................................................................9 5.5OPERACIONES DE MODIFICACIN A LA BASE DE DATOS............................................9

UNIDAD 5 LGEBRA RELACIONAL

5.1

OPERACIONES FUNDAMENTALES DEL ALGEBRA RELACIONAL.

El lgebra relacional es un lenguaje de consulta procedimental. Consta de un conjunto de operaciones que toman como entrada una o dos relaciones y producen como resultado una nueva relacin. Las operaciones fundamentales del lgebra relacional son: Seleccin Proyeccin Unin Diferencia de Conjuntos Producto Cartesiano Renombramiento.

Las operaciones seleccin, proyeccin y renombramiento se denominan operaciones unarias porque operan sobre una sola relacin. Las otras tres operaciones operan sobre pares de relaciones y se denominan, por lo tanto, operaciones binarias. Adems de las operaciones fundamentales, hay otras operaciones, por ejemplo: Interseccin de Conjuntos Reunin Natural Divisin Asignacin.

Figura 4.1 La relacin prstamo. LA OPERACIN SELECCIN: selecciona tuplas que satisfacen un predicado dado. Se utiliza la letra griega sigma minscula () para denotar la seleccin. El predicado aparece como subndice de . La relacin del argumento se da entre parntesis a continuacin de . Por tanto, para seleccionar las tuplas de la relacin prstamo en que la sucursal es Navacerrada hay que escribir
nombre-sucursal = Navacerrada

(prstamo)

Si la relacin prstamo es como se muestra en la Figura 4.1, la relacin que resulta de la consulta anterior es como se muestra en la Figura 4.2.

Figura 4.2. Resultado de nombre-sucursal = Navacerrada (prstamo) Se pueden buscar todas las tuplas en las que el importe prestado sea mayor que 1.200 escribiendo importe>1200 (prstamo) En general, se permiten las comparaciones que utilizan =, , <, , > o en el predicado de seleccin. Adems, se pueden combinar varios predicados en uno mayor utilizando las conectivas y () y o (v). Por tanto, para encontrar las tuplas correspondientes a prstamos de ms de 1.200 concedidos por la sucursal de Navacerrada, se escribe nombre-sucursal = Navacerrada
importe>1200

(prstamo)

LA OPERACIN PROYECCIN: Supngase que se desea hacer una lista de todos los nmeros de prstamo y del importe de los mismos, pero sin que aparezcan los nombres de las sucursales. La operacin proyeccin permite producir esta relacin. La operacin proyeccin es una operacin unaria que devuelve su relacin de argumentos, excluyendo algunos argumentos. Dado que las relaciones son conjuntos, se eliminan todas las filas duplicadas. La proyeccin se denota por la letra griega mayscula pi (). Se crea una lista de los atributos que se desea que aparezcan en el resultado como subndice de . La relacin de argumentos se escribe a continuacin entre parntesis. Por tanto, la consulta para crear una lista de todos los nmeros de prstamo y del importe de los mismos puede escribirse como nmero-prstamo, importe (prstamo) La relacin que resulta de esta consulta se muestra en la Figura 4.3.

Figura 4.3 Nmeros de prstamo y sus importes. LA OPERACIN UNIN: Considrese una consulta para averiguar el nombre de todos los clientes del banco que tienen una cuenta, un prstamo o ambas cosas. Obsrvese que la relacin cliente no contiene esa informacin, dado que los clientes no necesitan tener ni cuenta ni prstamo en el banco. Para contestar a esta consulta hace falta la informacin de la relacin impositor (Figura 4.4) y la de la relacin prestatario (Figura 4.5).

Figura 4.4 La relacin impositor.

Figura 4.5 La relacin prestatario.

Figura La relacin prstamo. Se conoce la manera de averiguar los nombres de todos los clientes con prstamos en el banco: nombre-cliente (prestatario)

Tambin se conoce la manera de averiguar el nombre de los clientes con cuenta en el banco: nombre-cliente (impositor) Para contestar a la consulta hace falta la unin de estos dos conjuntos; es decir, hacen falta todos los nombres de clientes que aparecen en alguna de las dos relaciones o en ambas. Estos datos se pueden averiguar mediante la operacin binaria unin, denotada, como en la teora de conjuntos, por . Por tanto, la expresin buscada es nombre-cliente (prestatario) nombre-cliente (impositor) La relacin resultante de esta consulta aparece en la Figura 4.6. Tngase en cuenta que en el resultado hay diez tuplas, aunque hay siete prestatarios y seis impositores distintos. Esta discrepancia aparente se debe a que Gmez, Santos y Lpez son a la vez prestatarios e impositores. Dado que las relaciones son conjuntos, se eliminan los valores duplicados.

Figura 4.6 Nombres de todos los clientes que tienen un prstamo o una cuenta. Obsrvese que en este ejemplo se toma la unin de dos conjuntos, ambos consistentes en valores de nombre-cliente. En general, se debe asegurar que las uniones se realicen entre relaciones compatibles. Por ejemplo, no tendra sentido realizar la unin de las relaciones prstamo y prestatario. La primera es una relacin con tres atributos, la segunda slo tiene dos. Ms an, considrese la unin de un conjunto de nombres de clientes y de un conjunto de ciudades. Una unin as no tendra sentido en la mayor parte de los casos. Por tanto, para que una operacin unin r s sea vlida hay que exigir que se cumplan dos condiciones: 1. 2. Las relaciones r y s deben ser de la misma aridad. Es decir, deben tener el mismo nmero de atributos. Los dominios de los atributos i-simos de r y de s deben ser iguales para todo i.

Tngase en cuenta que r y s pueden ser, en general, relaciones temporales que sean resultado de expresiones del lgebra relacional. Select <lista de campos/*> From <tabla1> Where<condicin1> Union Select <lista campos2/*> From<tabla2> Where<condicion2>

LA OPERACIN DIFERENCIA DE CONJUNTOS : denotada por , permite buscar las tuplas que estn en una relacin pero no en la otra. La expresin r s da como resultado una relacin que contiene las tuplas que estn en r pero no en s. Se pueden buscar todos los clientes del banco que tienen abierta una cuenta pero no tienen concedido ningn prstamo escribiendo nombre-cliente (impositor) nombre-cliente (prestatario) La relacin resultante de esta consulta aparece en la Figura 4.7. Como en el caso de la operacin unin, hay que asegurarse de que las diferencias de conjuntos se realicen entre relaciones compatibles. Por tanto, para que una operacin diferencia de conjuntos r s sea vlida hay que exigir que las relaciones r y s sean de la misma aridad y que los dominios de los atributos i-simos de r y s sean iguales.

FIGURA 4.7. Clientes con cuenta abierta pero sin prstamo concedido. LA OPERACIN PRODUCTO CARTESIANO: denotada por un aspa (), permite combinar informacin de cualesquiera dos relaciones. El producto cartesiano de las relaciones r1 y r2 como r1 r2. Recurdese que las relaciones se definen como subconjuntos del producto cartesiano de un conjunto de dominios. A partir de esta definicin ya se debe tener una intuicin sobre la definicin de la operacin producto cartesiano. Sin embargo, dado que el mismo nombre

de atributo puede aparecer tanto en r1 como en r2, hay que crear un esquema de denominaciones para distinguir entre ambos atributos. En este caso se logra adjuntando al atributo el nombre de la relacin de la que proviene originalmente. Por ejemplo, el esquema de relacin de r = prestatario prstamo es (prestatario.nombre-cliente, prestatario.nmero-prstamo, prstamo.nombre-sucursal, prstamo. nmero-prstamo, prstamo.importe) Con este esquema se puede distinguir entre prestatario. nmero-prstamo y prstamo.nmero-prstamo . Para los atributos que slo aparecen en uno de los dos esquemas se suele omitir el prefijo con el nombre de la relacin. Esta simplificacin no genera ambigedad alguna. Por tanto, se puede escribir el esquema de relacin de r como (nombre-cliente, prestatario.nmero-prstamo, nombre-sucursal, prstamo.nmero-prstamo, importe) El acuerdo de denominaciones precedente exige que las relaciones que sean argumentos de la operacin producto cartesiano tengan nombres diferentes. Esta exigencia causa problemas en algunos casos, como cuando se desea calcular el producto cartesiano de una relacin consigo misma. Se produce un problema similar si se utiliza el resultado de una expresin del lgebra relacional en un producto cartesiano, dado que har falta un nombre para la relacin para poder hacer referencia a sus atributos. En la operacin de renombramiento se ver la manera de evitar estos problemas. Ahora que se conoce el esquema de relacin de r = prestatario prstamo hay que averiguar las tuplas que aparecern en r. Como se poda imaginar, se crea una tupla de r a partir de cada par de tuplas posible: una de la relacin prestatario y otra de la relacin prstamo. Por tanto, r es una relacin de gran tamao, como se puede ver en la Figura 4.8, donde slo se ha incluido una parte de las tuplas que forman parte de r. Supngase que se tienen n1 tuplas en prestatario y n2 tuplas en prstamo. Por tanto, hay n1 * n2 maneras de escoger un par de tuplas, una tupla de cada relacin; por lo que hay n1 * n2 tuplas en r. En concreto, obsrvese que para algunas tuplas t de r puede ocurrir que t[prestatario. Nmero-prstamo] t[prstamo.nmero-prstamo]. En general, si se tienen las relaciones r1 (R1) y r2 (R2), r1 r2 es una relacin cuyo esquema es la concatenacin de R1 y de R2. La relacin R contiene todas las tuplas t para las que hay unas tuplas t1 en r1 y t2 en r2 para las que t[R1] = t1[R1] y t[R2] = t2[R2]. Supngase que se desea averiguar los nombres de todos los clientes que tienen concedido un prstamo en la sucursal de Navacerrada. Se necesita para ello informacin de las relaciones prstamo y prestatario. Si se escribe nombre-sucursal = Navacerrada (prestatario prstamo) entonces el resultado es la relacin mostrada en la Figura 1.9. Se tiene una relacin que slo atae a la sucursal de Navacerrada. Sin embargo, la columna nombre-cliente puede contener clientes que no tengan concedido ningn prstamo en la sucursal de Navacerrada. (Si no se ve el motivo por el que esto es cierto, recurdese que el producto cartesiano toma todos los emparejamientos posibles de una tupla de prestatario con una tupla de prstamo.) Dado que la operacin producto cartesiano asocia todas las tuplas de prstamo con todas las tuplas de prestatario, se sabe que, si un cliente tiene concedido un prstamo en la sucursal de Navacerrada, hay alguna tupla de prestatario prstamo que contiene su nombre y que prestatario.nmero-prstamo = prstamo.nmero-prstamo. Por tanto, si escribimos prestatario.nmero-prstamo = prstamo.nmero-prstamo (nombre-sucursal = Navacerrada (prestatario prstamo)) slo se obtienen las tuplas de prestatario prstamo que corresponden a los clientes que tienen concedido un prstamo en la sucursal de Navacerrada. Finalmente, dado que slo se desea obtener nombre-cliente, se realiza una proyeccin: nombre-cliente ( prestatario.nmero-prstamo = prstamo.nmero-prstamo (nombre-sucursal = Navacerrada (prestatario prstamo))) El resultado de esta expresin se muestra en la Figura 4.10 y es la respuesta correcta a la consulta formulada.

Figura 4.8 Resultado de prestatario x prstamo.

Figura 4.9 Resultado de nombre-sucursal = Navacerrada (prestatario prstamo).

Figura 4.10 nombre-cliente ( prestatario.nmero-prstamo = prstamo.nmero-prstamo (nombre-sucursal = Navacerrada (prestatario prstamo)))

La operacin producto consiste en la realizacin de un producto cartesiano entre dos tablas dando como resultado todas las posibles combinaciones entre los registros de la primera y los registros de la segunda. Esta operacin se entiende mejor con el siguiente ejemplo: Tabla A X 10 11 Y 22 25

Tabla B W Z 33 54 37 98 42 100 El producto de A * B dara como resultado la siguiente tabla: Tabla A * Tabla B 10 22 33 54 10 22 37 98 10 22 42 100 11 25 33 54 11 25 37 98 11 25 42 100

La operacin renombramiento: A diferencia de las relaciones de la base de datos, los resultados de las expresiones de lgebra relacional no tienen un nombre que se pueda utilizar para referirse a ellas. Resulta til poder ponerles nombre; el operador renombramiento, denotado por la letra griega rho minscula (), permite realizar esta tarea. Dada una expresin E del lgebra relacional, la expresin x (E) devuelve el resultado de la expresin E con el nombre x. Las relaciones r por s mismas se consideran expresiones (triviales) del lgebra relacional. Por tanto, tambin se puede aplicar la operacin renombramiento a una relacin r para obtener la misma relacin con un nombre nuevo. Otra forma de la operacin renombramiento es la siguiente. Supngase que una expresin del lgebra relacional E tiene aridad n. Por tanto, la expresin x (A1, A2, An) (E) devuelve el resultado de la expresin E con el nombre x y con los atributos con el nombre cambiado a A 1, A2, , An. Para ilustrar el uso del renombramiento de las relaciones, considrese la consulta Buscar el mximo saldo de cuenta del banco. La estrategia empleada para obtener el resultado es 1) calcular una relacin intermedia consistente en los saldos que no son el mximo y 2) realizar la diferencia entre la relacin saldo (cuenta) y la relacin intermedia recin calculada. Paso 1: Para calcular la relacin intermedia hay que comparar los valores de los saldos de todas las cuentas. Esta comparacin se puede hacer calculando el producto cartesiano cuenta cuenta y formando una seleccin para comparar el valor de cualesquiera dos saldos que aparezcan en una tupla. En primer lugar hay que crear un mecanismo para distinguir entre los dos atributos saldo. Se utilizar la operacin renombramiento para cambiar el nombre de una referencia a la relacin cuenta; as, se puede hacer referencia dos veces a la relacin sin ambigedad alguna. La relacin temporal que se compone de los saldos que no son el mximo puede escribirse ahora como cuenta.saldo (cuenta.saldo < d.saldo (cuenta d (cuenta))) Esta expresin proporciona los saldos de la relacin cuenta para los que aparece un saldo mayor en alguna parte de la relacin cuenta (cuyo nombre se ha cambiado a d). El resultado contiene todos los saldos salvo el mximo. Esta relacin se muestra en la Figura 3.17.

FIGURA 3.17. Resultado de la subexpresin cuenta-saldo (cuenta-saldo < d.saldo (cuenta d (cuenta))). Paso 2: La consulta para averiguar el mximo saldo de cuenta del banco puede escribirse de la manera siguiente: saldo (cuenta) cuenta.saldo ( cuenta.saldo < d.saldo (cuenta d (cuenta))) En la Figura 3.18 se muestra el resultado de esta consulta. Considrese la siguiente consulta como un nuevo ejemplo de la operacin renombramiento: Averiguar los nombres de todos los clientes que viven en la misma calle y en la misma ciudad que Gmez. Se puede obtener la calle y la ciudad en la que vive Gmez escribiendo calle-cliente, ciudad-cliente ( nombre-cliente = Gmez (cliente)) Sin embargo, para hallar a otros clientes que vivan en esa calle y en esa ciudad hay que hacer referencia por segunda vez a la relacin cliente. En la consulta siguiente se utiliza la operacin renombramiento sobre la expresin anterior para darle al resultado el nombre direccin-Gmez y para cambiar el nombre de los atributos a calle y ciudad en lugar de calle-cliente y ciudad- cliente:

cliente.nombre-cliente (cliente.calle-cliente = direccin-Gmez cliente.ciudad-cliente = direccin-Gmez. ciudad (cliente direccin-Gmez (calle, ciudad) (calle-cliente, ciudad-cliente ( nombre-cliente = Gmez (cliente))))) El resultado de esta consulta, cuando se aplica a la relacin cliente de la Figura 3.4, se muestra en la Figura 3.19.

FIGURA 3.18. Saldo mximo de las cuentas del banco.

FIGURA 3.19. Los clientes que viven en la misma calle y en la misma ciudad que Gmez. La operacin renombramiento no es estrictamente necesaria, dado que es posible utilizar una notacin posicional para los atributos. Se pueden nombrar los atributos de una relacin de manera implcita utilizando una notacin posicional, donde $1, $2, hagan referencia al primer atributo, al segundo, etctera. La notacin posicional tambin se aplica a los resultados de las operaciones del lgebra relacional. La siguiente expresin del lgebra relacional ilustra el uso de la notacin posicional con el operador unario : $2=$3 (R R) Si una operacin binaria necesita distinguir entre las dos relaciones que son sus operandos, se puede utilizar una notacin posicional parecida para los nombres de las relaciones. Por ejemplo, $R1 puede hacer referencia al primer operando y $R2, al segundo. Sin embargo, la notacin posicional no resulta conveniente para las personas, dado que la posicin del atributo es un nmero en vez de un nombre de atributo fcil de recordar. Por tanto, en este libro no se utiliza la notacin posicional.

5.2

OTRAS OPERACIONES

Interseccin La operacin de interseccin permite identificar filas que son comunes en dos relaciones. Supongamos que tenemos una tabla de empleados y otra tabla con los asistentes que han realizado un curso de ingls (los asistentes pueden ser empleados o gente de la calle). Queremos crear una figura virtual en la tabla denominada "Empleados que hablan Ingls", esta figura podemos crearla realizando una interseccin de empleados y curso de ingls, los elementos que existan en ambas tablas sern aquellos empleados que han asistido al curso. Reunin La reunin se utiliza para recuperar datos a travs de varias tablas conectadas unas con otras mediante clusulas JOIN, en cualquiera de sus tres variantes INNER, LEFT, RIGHT. La operacin reunin se puede combinar con las operaciones seleccin y proyeccin. Un ejemplo de reunin es conseguir los pedidos que nos han realizado los clientes nacionales cuyo importe supere 15.000 unidades de producto, generando un informe con el nombre del cliente y el cdigo del pedido. En este caso se da por supuesto que la tabla clientes es diferente a la tabla pedidos y que hay que conectar ambas mediante, en este caso, un INNER JOIN. Divisin La operacin divisin es la contraria a la operacin producto y quizs sea la ms compleja de explicar, por tanto comenzar directamente con un ejemplo. Una determinada empresa posee una tabla de comerciales, otra tabla de productos y otra con las ventas de los comerciales. Queremos averiguar que comerciales han vendido todo tipo de producto. Lo primero que hacemos es extraer en una tabla todos los cdigos de todos los productos, a esta tabla la denominamos A. Tabla A Cdigo Producto 1035 2241 2249 2518 En una segunda tabla extraemos, de la tabla de ventas, el cdigo del producto y el comercial que lo ha vendido, lo hacemos con una proyeccin y evitamos traer valores duplicados. El resultado podra ser el siguiente: Tabla B Cdigo Comercial Cdigo Producto 10 2241

23 23 39 37 10 23 23

2518 1035 2518 2518 2249 2249 2241

Si dividimos la tabla B entre la tabla A obtendremos como resultado una tercera tabla que: 1. 2. Los campos que contiene son aquellos de la tabla B que no existen en la tabla A. En este caso el campo Cdigo Comercial es el nico de la tabla B que no existen en la tabla A. Un registro se encuentra en la tabla resultado si y slo si est asociado en la tabla B con cada fila de la tabla A Tabla Resultado Cdigo Comercial 23 Por qu el resultado es 23?. El comercial 23 es el nico de la tabla B que tiene asociados todos los posibles cdigos de producto de la tabla A. Asignacin Esta operacin algebraica consiste en asignar un valor a uno o varios campos de una tabla.

5.3

ALGEBRA RELACIONAL EXTENDIDA.

Las operaciones bsicas del lgebra relacional se han ampliado de varias maneras. Una ampliacin sencilla es permitir operaciones aritmticas como parte de la proyeccin. Una ampliacin importante es permitir operaciones de agregacin, como el clculo de la suma de los elementos de un conjunto, o su media. Otra ampliacin importante es la operacin reunin externa, que permite a las expresiones del lgebra relacional trabajar con los valores nulos que modelan la informacin que falta. Proyeccin generalizada La operacin proyeccin generalizada ampla la operacin proyeccin permitiendo que se utilicen funciones aritmticas en la lista de proyeccin. La operacin proyeccin generalizada tiene la forma: F1,F2,...,Fn (E) donde E es cualquier expresin del lgebra relacional y F1, F2, . . . , Fn son expresiones aritmticas. De forma trivial, la expresin aritmtica puede ser simplemente un atributo o una constante. Funciones de agregacin Las funciones de agregacin son funciones que toman una coleccin de valores y devuelven como resultado un nico valor. Las funciones de agregacin ms habituales son sum (Suma), avg (Media aritmtica), count (nmero de elementos), min y max (Mnimo y mximo, respectivamente). En la siguiente tabla se muestran algunos ejemplos de funciones de agregacin. Conjunto de valores {1, 1, 3, 4, 4, 11} {1, 1, 3, 4, 4, 11} {1, 1, 3, 4, 4, 11} {1, 1, 3, 4, 4, 11} {1, 1, 3, 4, 4, 11} funcin sum avg count min max resultado 24 4 6 1 11

La expresin del lgebra relacional para el uso de una funcin de agregacin es f (a)(R) Donde f es la funcin de agregacin, R es la relacin considerada, y a es el atributo a utilizar. Por ejemplo: sum(sueldo)(empleado) Es una relacin con un nico atributo, que contiene una sola fila con un valor correspondiente a la suma de los sueldos de todos los empleados. Las colecciones en las que operan las funciones de agregacin pueden tener valores repetidos; el orden en el que aparezcan los valores no tiene importancia.

Pero hay casos en los que se desea borrar los valores repetidos antes de calcular la funcin de agregacin. Para ello hay que utilizar los mismos nombres de funciones que antes, con la cadena de texto -distinct al final del nombre de la funcin (por ejemplo, count-distinct) Es posible dividir una relacin en grupos, y aplicar las funciones de agregacin de forma independiente en cada grupo. La sintaxis sera as:
G1,G2,...,Gn

F1(a1),F2(a2),...,Fm(am)(E)

donde E es cualquier expresin del lgebra relacional; G1,G2, . . . ,Gn constituyen una lista de atributos que indican cmo se realiza la agrupacin, cada Fi es una funcin de agregacin y cada Ai es el nombre de un atributo. La relacin resultante consistir en las tuplas con los atributos usados para agrupar, ms los resultados de las funciones de agregacin. Reunin externa La operacin reunin externa es una ampliacin de la operacin reunin para trabajar con la informacin que falta. Esta operacin tiene tres formas diferentes: reunin externa por la izquierda, denotada por |X, reunin externa por la derecha, denotada por X| y reunin externa completa, denotada por X. La reunin externa por la izquierda (|X) toma todas las tuplas de la relacin de la izquierda que no coincidan con ninguna tupla de la relacin de la derecha, las rellena con valores nulos en todos los dems atributos de la relacin de la derecha y las aade al resultado de la reunin natural. La reunin externa por la derecha (X|) es simtrica de la reunin externa por la izquierda. La reunin externa completa ( X ) realiza estas dos operaciones, rellenando las tuplas de la relacin de la izquierda que no coincidan con ninguna tupla de la relacin de la derecha y las tuplas de la relacin de la derecha que no coincidan con ninguna tupla de la relacin de la izquierda, y aadindolas al resultado de la reunin.

5.4

VALORES NULOS

A menudo hay varias formas de tratar los valores nulos. Las operaciones y las comparaciones con valores nulos se deberan evitar siempre que sea posible. Dado que el valor especial nulo indica valor desconocido o no existente, cualquier operacin aritmtica que incluya valores nulos devolver un valor nulo. De manera similar, cualquier comparacin (como <, _, >, _ y, /) que incluya un valor nulo se evala al nuevo valor lgico desconocido. Las operaciones lgicas tratan los valores desconocidos tal y como se muestra en la siguiente tabla. op1 cierto falso desconocido cierto falso desconocido desconocido operador ^ ^ ^ v v v op2 desconocido desconocido desconocido desconocido desconocido desconocido resultado desconocido falso desconocido cierto desconocido desconocido desconocido

A la hora de efectuar operaciones en el lgebra relacional que impliquen valores nulos, hay que tener en cuenta que las operaciones de proyeccin, unin, interseccin y diferencia tratan los valores nulos como cualquier otro valor al eliminar duplicados. Si dos tuplas del resultado de alguna de estas operaciones son exactamente iguales, y ambos tienen nulos en los mismos campos, se tratan como duplicados. La decisin es un tanto arbitraria porque sin saber cul es el valor real no se sabe si los dos valores nulos son duplicados o no. Para las funciones de agregacin, hay que tener en cuenta que cuando hay nulos en los atributos agregados, la operacin borra los valores nulos del resultado antes de aplicar la agregacin. Si el multiconjunto resultante est vaco, el resultado agregado ser nulo. Obsrvese que el tratamiento de los valores nulos aqu es diferente que en las expresiones aritmticas ordinarias.

5.5

OPERACIONES DE MODIFICACIN A LA BASE DE DATOS

En este apartado se abordar la manera de insertar, borrar o modificar informacin de la base de datos. Borrado Las solicitudes de borrado se expresan bsicamente igual que las consultas. Sin embargo, en lugar de mostrar las tuplas al usuario, se eliminan de la base de datos las tuplas seleccionadas. Slo se pueden borrar tuplas enteras; no se pueden borrar valores de atributos concretos. En el lgebra relacional los borrados se expresan mediante r rE

donde r es una relacin y E es una consulta del lgebra relacional. Insercin Para insertar datos en una relacin hay que especificar la tupla que se va a insertar o escribir una consulta cuyo resultado sea un conjunto de tuplas que vayan a insertarse. El valor de los atributos de las tuplas insertadas deben ser miembros del dominio de cada atributo y las tuplas insertadas deben ser de la aridad correcta. En el lgebra relacional las inserciones se expresan mediante r rUE donde r es una relacin y E es una consulta del lgebra relacional. Actualizacin Puede que, en algunas situaciones, se desee modificar un valor de una tupla sin modificar todos los valores de la tupla. Se puede utilizar el operador proyeccin generalizada para realizar esta tarea: r F1, F2, ..., Fn (r) donde cada Fi es o bien el i-simo atributo de r, si el i-simo atributo no est actualizado, o una expresin que slo implique constantes y los atributos de r, y que del nuevo valor del atributo. Si se desea seleccionar varias tuplas de r y slo actualizar esas mismas tuplas, se puede utilizar la expresin siguiente, donde P denota la condicin de seleccin que escoge las tuplas que hay que actualizar: r F1,F2,...,Fn (P(r)) U (r P(r))

BIBLIOGRAFA Silberschatz, Korth, Sudarshan, Fundamentos de bases de datos, cuarta edicin, Mc Graw-Hill, 2002,787 p. ABRAMHAM, KORTH y SUDARSHAN) (ELMASRI/NAVATHE)

10

Das könnte Ihnen auch gefallen