Sei sulla pagina 1di 25

FUNDAMENTOS DE BASE DE DATOS L.I.A.

DONAJI TAPIA GARCIA

UNIDAD 5. ALGEBRA RELACIONAL 1. OPERACIONES FUNDAMENTALES DEL ALGEBRA RELACIONAL 2. OTRAS OPERACIONES DEL ALGEBRA RELACIONAL 3. ALGEBRA RELACIONAL EXTENDIDA 4. VALORES NULOS 5. OPERACIONES DE MODIFICACION A LA BASE DE DATOS

ING. MARIO HERNANDEZ HERNANDEZ ING. TICS 3 C

1. OPERACIONES FUNDAMENTALES DEL ALGEBRA RELACIONAL. El lgebra relacional es un lenguaje formal con una serie de operadores que trabajan sobre una o varias relaciones para obtener otra relacin resultado, sin que cambien las relaciones originales. Tanto los operandos como los resultados son relaciones, por lo que la salida de una operacin puede ser la entrada de otra operacin. Esto permite anidar expresiones del lgebra, del mismo modo que se pueden anidar las expresiones aritmticas. A esta propiedad se le denomina clausura: las relaciones son cerradas bajo el lgebra, del mismo modo que los nmeros son cerrados bajo las operaciones aritmticas. En este apartado se presentan los operadores del lgebra relacional de un modo informal. Las definiciones formales pueden encontrarse en la bibliografa que se comenta al final del captulo. Primero se describen los ocho operadores originalmente propuestos por Codd y despus se estudian algunos operadores adicionales que aaden potencia al lenguaje. De los ocho operadores, slo hay cinco que son fundamentales: restriccin, proyeccin, producto cartesiano, unin y diferencia, que permiten realizar la mayora de las operaciones de obtencin de datos. Los operadores no fundamentales son la concatenacin (join), la interseccin y la divisin, que se pueden expresar a partir de los cinco operadores fundamentales. La restriccin y la proyeccin son operaciones unarias porque operan sobre una sola relacin. El resto de las operaciones son binarias porque trabajan sobre pares de relaciones. En las definiciones que se presentan a continuacin, se supone que R y S son dos relaciones cuyos atributos son A=(a , a , ..., a respectivamente. Restriccin : R WHERE condicin ) y B=(b , b , ..., b )

La restriccin, tambin denominada seleccin, opera sobre una sola relacin R y da como resultado otra relacin cuyas tuplas son las tuplas de R que satisfacen la condicin especificada. Esta condicin es una comparacin en la que aparece al menos un atributo de R, o una combinacin booleana de varias de estas comparaciones.

Ejemplo 4.1 Obtener todos los empleados con un salario anual superior a 15.000 euros. PLANTILLA WHERE salario>15000 Enu m EL2 1 Nombr Apellid Direccin e o Ameli a Pastor Telfon Puesto o Director Fecha_n ac 12/10/62 Salari DNI o 3000 0 3943221 2E Onu m O5

964 Magallane 284 s, 15 560 Castelln

EG3 Pedro 7

Cubed Bayarri, o 11 Villarreal

964 535 690

Supervis 24/3/57 or

1800 0

3876662 3X

O3

EA9

Rita

Renau

Casalduc h, 32 Castelln

964 257 550

Supervis 19/5/60 or

1800 0

3923319 0F

O7

EG5 Julio

Prats

964 Melilla, 23 524 590 Villarreal

Director

19/12/50

2400 0

2564430 9X

O3

EL4 1

Herrero, Carlos Baeza 51 Castelln

964 247 250

Supervis 29/2/67 or

1800 0

3955213 3T

O5

Ejemplo 4.2 Obtener todos los inmuebles de Castelln con un alquiler mensual de hasta 350 euros. INMUEBLE WHERE poblacin=`Castelln' AND alquiler<=350 Inum Calle Area Poblacin Tipo Hab Alquiler Pnum 350 300 325 P87 P40 P93

IL94 Riu Ebre, 24 Ronda Sur Castelln Piso 4 IG4 Sorell, 5 Grao Castelln Piso 3 Segorbe Piso 3

IG36 Alicante,1 Proyeccin : R[a , ..., a ]

La proyeccin opera sobre una sola relacin R y da como resultado otra relacin

que contiene un subconjunto vertical de R, extrayendo los valores de los atributos especificados y eliminando duplicados. Ejemplo 4.3 Obtener un listado de empleados mostrando su nmero, nombre, apellido y salario. PLANTILLA [ enum, nombre, apellido, salario] Enum Nombre Apellido Salario EL21 Amelia EG37 Pedro EG14 Luis EA9 EG5 Rita Julio Pastor 30000

Cubedo 18000 Collado 12000 Renau Prats Baeza 18000 24000 18000

EL41 Carlos PLANTILLA [puesto]

Ejemplo 4.4 Obtener los distintos puestos que pueden ocupar los empleados.

Puesto Director Supervisor Administ. Producto cartesiano : R TIMES S El producto cartesiano obtiene una relacin cuyas tuplas estn formadas por la concatenacin de todas las tuplas de R con todas las tuplas de S. La restriccin y la proyeccin son operaciones que permiten extraer informacin de una sola relacin. Habr casos en que sea necesario combinar la informacin de varias relaciones. El producto cartesiano ``multiplica" dos relaciones, definiendo una nueva relacin que tiene todos los pares posibles de tuplas de las dos relaciones. Si la relacin R tiene tuplas y atributos y la relacin S tiene tuplas y tuplas y atributos, la relacin

resultado tendr

atributos. Ya que es posible que haya atributos

con el mismo nombre en las dos relaciones, el nombre de la relacin se antepondr al del

atributo en este caso para que los nombres de los atributos sigan siendo nicos en la relacin resultado. Ejemplo 4.5 Obtener los nombres de los inquilinos y los comentarios que stos han realizado cuando han visto algn inmueble. INQUILINO [qnum, nombre, apellido] TIMES VISITA [qnum, inum, comentario] INQUILINO.Qnum Nombre Apellido VISITA.Qnum Inum Comentario Q76 Q76 Q76 Q76 Q76 Q56 Q56 Q56 Q56 Q56 Q74 Q74 Q74 Q74 Q74 Q62 Q62 Q62 Q62 Q62 Juan Juan Juan Juan Juan Ana Ana Ana Ana Ana Elena Elena Elena Elena Elena Alicia Alicia Alicia Alicia Alicia Felip Felip Felip Felip Felip Grangel Grangel Grangel Grangel Grangel Abaso Abaso Abaso Abaso Abaso Mori Mori Mori Mori Mori Q56 Q76 Q56 Q62 Q56 Q56 Q76 Q56 Q62 Q56 Q56 Q76 Q56 Q62 Q56 Q56 Q76 Q56 Q62 Q56 IA14 muy pequeo IG4 IG4 IA14 no tiene saln IG36 IA14 muy pequeo IG4 IG4 IA14 no tiene saln IG36 IA14 muy pequeo IG4 IG4 IA14 no tiene saln IG36 IA14 muy pequeo IG4 IG4 IA14 no tiene saln IG36 muy lejos muy lejos muy lejos muy lejos

Como se puede observar, la relacin resultado contiene ms informacin de la que se necesita. Por ejemplo, la primera tupla tiene distintos nmeros de inquilino: el comentario realizado en la visita no corresponde al inquilino cuyo nombre y apellido se muestra. Para obtener el listado que se pide en el ejemplo, es necesario realizar una restriccin para quedarse solamente con las tuplas en donde INQUILINO.Qnum = VISITA.Qnum.

(INQUILINO[qnum,nombre,apellido] WHERE inquilino.qnum=visita.qnum

TIMES

VISITA[qnum,inum,comentario])

El resultado de esta operacin se muestra a continuacin. INQUILINO.Qnum Nombre Apellido VISITA.Qnum Inum Comentario Q76 Q56 Q56 Q56 Q62 Juan Ana Ana Ana Alicia Felip Grangel Grangel Grangel Mori Q76 Q56 Q56 Q56 Q62 IG4 muy lejos

IA14 muy pequeo IG4 IG36 IA14 no tiene saln

La combinacin del producto cartesiano y la restriccin del modo en que se acaba de realizar, se puede reducir a la operacin de concatenacin ( join) que se presenta ms adelante. Unin : R y UNION S

La unin de dos relaciones R y S, con relacin que tiene como mucho

tuplas respectivamente, es otra

tuplas siendo stas las tuplas que se

encuentran en R o en S o en ambas relaciones a la vez. Para poder realizar esta operacin, R y S deben ser compatibles para la unin. Se dice que dos relaciones son compatibles para la unin si ambas tienen la misma cabecera, es decir, si tienen el mismo nmero de atributos y stos se encuentran definidos sobre los mismos dominios. En muchas ocasiones ser necesario realizar proyecciones para hacer que dos relaciones sean compatibles para la unin. Ejemplo 4.6 alquilar. OFICINA[rea] UNION INMUEBLE[rea] Area Centro Grao Ronda Sur Obtener un listado de las reas en las que hay oficinas o inmuebles para

Rafalafena Diferencia : R MINUS S La diferencia obtiene una relacin que tiene las tuplas que se encuentran en R y no se encuentran en S. Para realizar esta operacin, R y S deben ser compatibles para la unin. Ejemplo 4.7 Obtener un listado de todas las poblaciones en donde hay una oficina y no hay inmuebles para alquilar. OFICINA [poblacin] MINUS INMUEBLE [poblacin] Poblacin Villarreal Concatenacin (Join) : R JOIN S La concatenacin de dos relaciones R y S obtiene como resultado una relacin cuyas tuplas son todas las tuplas de R concatenadas con todas las tuplas de S que en los atributos comunes (que se llaman igual) tienen los mismos valores. Estos atributos comunes aparecen una sola vez en el resultado. Ejemplo 4.8 Obtener los nombres y los comentarios que los inquilinos han realizado cuando han visto algn inmueble. INQUILINO JOIN VISITA Esta expresin obtiene el mismo resultado que la expresin final del ejemplo 4.5, ya que la concatenacin es, en realidad, un producto cartesiano y una restriccin de igualdad sobre los atributos comunes. Concatenacin externa (Outer-join) : R JOIN S (+) La concatenacin externa es una concatenacin en la que las tuplas de R que no tienen valores en comn con ninguna tupla de S, tambin aparecen en el resultado. Ejemplo 4.9 Obtener un listado de todos los inmuebles y las visitas que han tenido. INMUEBLE JOIN VISITA (+) Inum Calle Poblacin Qnum Fecha Comentario

IA14 Enmedio, 128 IA14 Enmedio, 128 IL94 Riu Ebre, 24 IG4 IG4 Sorell, 5 Sorell, 5

Castelln Q56 Castelln Q62 Castelln Castelln Q76 Castelln Q56 Segorbe Q56

24/11/99 muy pequeo 14/11/99 no tiene saln

20/10/99 muy lejos 26/11/99 28/10/99

IG36 Alicante,1

IG21 San Francisco, 10 Vinaroz IG16 Capuchinos, 19 Castelln

La expresin S (+) JOIN R es equivalente a R JOIN S (+). Cuando en ambas relaciones hay tuplas que no se pueden concatenar y se desea que en el resultado aparezcan tambin todas estas tuplas (tanto las de una relacin como las de la otra), se utiliza la concatenacin externa completa: R (+) JOIN S (+) Interseccin :RINTERSECTS La interseccin obtiene como resultado una relacin que contiene las tuplas de R que tambin se encuentran en S. Para realizar esta operacin, R y S deben ser compatibles para la unin. La interseccin se puede expresar en trminos de diferencias: R INTERSECT S = R MINUS (R MINUS S) Divisin :RDIVIDEBYS Suponiendo que la cabecera de R es el conjunto de atributos A y que la cabecera de S es el conjunto de atributos B, tales que B es un subconjunto de A, y si C = A B (los atributos de R que no estn en S), la divisin obtiene una relacin cuya cabecera es el conjunto de atributos C y que contiene las tuplas de R que estn acompaadas de todas las tuplas de S. Ejemplo 4.10 Obtener los inquilinos que han visitado todos los inmuebles de tres habitaciones. VISITA [qnum,inum] DIVIDEBY (INMUEBLE WHERE hab=3)[inum] Qnum Q56 Adems de las operaciones que Codd incluy en el lgebra relacional, otros autores han aportado otras operaciones para dar ms potencia al lenguaje. Es de especial inters la

agrupacin, tambin denominada resumen, que aade capacidad computacional al lgebra. Agrupacin : SUMMARIZE R GROUPBY(a ,...,a ) ADD clculo AS atributo

Esta operacin agrupa las tuplas de R que tienen los mismos valores en los atributos especificados y realiza un clculo sobre los grupos obtenidos. La relacin resultado tiene como cabecera los atributos por los que se ha agrupado y el clculo realizado, al que se da el nombre especificado en atributo. Los clculos que se pueden realizar sobre los grupos de filas son: suma de los valores de un atributo ( SUM(a )), media de los valores de un atributo ( AVG(a )), mximo y mnimo de los valores de un atributo ( MAX(a ), MIN(a )) y nmero de tuplas en el grupo ( COUNT(*)). La relacin resultado tendr tantas filas como grupos se hayan obtenido. Ejemplo 4.11 Obtener el salario total que se gasta en los empleados de cada oficina. SUMMARIZE PLANTILLA GROUPBY(oficina) ADD SUM(salario) AS salario_total Oficina Salario_total O5 O3 O7 48000 54000 18000

2. OTRAS OPERACIONES DEL ALGEBRA LINEAL. El lgebra relacional permite entender el modelo relacional de bases de datos desde la perspectiva matemtica. Aqu se introducen los fundamentos del lgebra relacional y se les relaciona con la estructura del lenguaje de consulta de bases de datos relacionales SQL, para conectar la teora con la prctica. El modelo relacional de bases de datos se basa en un modelo formal especificado de acuerdo a la teora de conjuntos. Una base de datos en este modelo es simplemente un conjunto de relaciones. Estas relaciones las vemos informalmente como tablas en los

gestores de bases de datos relacionales, pero no hay que olvidar que se basan en una cierta representacin matemtica. Una relacin de nombre R se define sobre el un conjunto de atributos Ai y se denota como R(A1, A2, ... , An).A la definicin del conjunto de atributos se le denomina esquema de la relacin. En contraste, la extensin de la relacin de esquema R(A1, A2, ... , An) es un conjunto de tuplasti (i = 1, 2, ..., m), donde cada tupla es un conjunto de pares: t i = {<A1:v[i,1]>, <A2:v[i,2]> ... <An:v[i, n])>} y, para cada par <Aj:v[i,j]>, se cumple que v[i,j] es un valor que pertenece dominio(Aj), o bien un valor especial que denominaremos nulo. Para seguir la discusin terica utilizaremos un ejemplo de una base de datos para modelar la actividad docente de los profesores de un departamento. Comenzaremos por un esquema muy sencillo, con dos relaciones que se muestran a continuacin.

Siguiendo la notacin anterior, por ejemplo, tenemos una relacin DEPARTAMENTOS (nombre, grado-experimentalidad, telefono). Una posible tupla sera la siguiente: t1 = {<nombre: Matemticas>, <grado-experimentalidad:1.5>, <fax:918845689>} La operacin de proyeccin permite seleccionar algunos atributos de una relacin (sea sta una relacin o el resultado de otras operaciones). Formalmente, dada una relacin R (A1, A2, ... , An), y un subconjunto de atributos de esa relacin (Ai, Aj, ..., Ak), la

proyeccin sobre esos atributos se denota como R(Ai, Aj, ..., Ak), y contiene las partes de las tuplas con los valores de los atributos proyectados. Es importante notar lo siguiente en las proyecciones:

Como el resultado de cualquier operacin de lgebra relacional es una relacin, las tuplas repetidas en el resultado de la proyeccin se eliminarn.

El orden de los atributos en la proyeccin no tiene que ser el mismo que en la relacin original.

La operacin de proyeccin en el lenguaje de consulta SQL se realiza simplemente especificando el subconjunto de atributos en la clusula SELECT. SELECT Ai, Aj, ..., Ak FROM R Por ejemplo, si tuvisemos la siguiente extensin de la tabla PROFESORES: dni apellidos nombre fecha-nacimiento es-doctor telfono-mvil D_nombre Matemtica 32323 Prez Juan 30/10/1965 true 65454545 s 4434343 Dez Jos 30/10/1970 true 65789767 Historia Matemtica 23423432 Snchez Juan 30/10/1980 false 66789899 s La siguiente sentencia SELECT hace una proyeccin del nombre y los apellidos. SELECT nombre, apellidos FROM PROFESORES Es importante notar que la siguiente sentencia no devolvera una relacin, ya que tendra dos tuplas repetidas. SELECT nombre FROM profesores Para asegurar que el resultado es una relacin en el sentido matemtico, hay que utilizar el modificador DISTINCT. SELECT DISTINCT nombre FROM profesores La seleccin permite elegir algunas tuplas

La seleccin es una operacin que elige algunas tuplas de una relacin y elimina el resto. La nueva relacin contiene por tanto solo tuplas seleccionadas que cumplen una determinada condicin de seleccin C La condicin de seleccin es una condicin lgica que permita decidir qu incluir y qu no. Los atributos de la seleccin son los mismos que los de la relacin original, y todas las tuplas de la seleccin cumplen la condicin C. Por ejemplo: R := DEPARTAMENTOS(grado-experimentalidad >1.0) Q := PROFESORES(no es-doctor y telfono-mvil <> null) En SQL, la seleccin se especifica mediante la clusula WHERE. Por ejemplo: SELECT * FROM DEPARTAMENTOS WHERE grado-experimentalidad > 1.0 SELECT * FROM PROFESORES WHERE not es doctor and telfono-mvil IS NOT NULL. La combinacin o reunin (join) permite cruzar los valores de tablas relacionadas La combinacin toma dos relaciones y devuelve una relacin con las tuplas que resultan de concatenar tuplas de la primera con tuplas de la segunda y despus seleccionar las que cumplen una condicin de combinacinC. Una combinacin entre las relaciones R y Q mediante la condicin C se denota como R[C]Q. Por ejemplo, si queremos obtener la informacin de profesores y departamentos combinada, utilizaremos como combinacin la igualdad de la clave ajena en PROFESORES con la clave primaria en DEPARTAMENTOS: DPT:=DEPARTAMENTOS PROFESORES[D_nombre = DPT.nombre]DPT

En SQL, la combinacin se hace incluyendo ms de una relacin en la clusula FROM, y la condicin C se coloca como clusula WHERE. SELECT * FROM PROFESORES AS P, DEPARTAMENTOS AS D WHERE P.D_nombre = D.nombre La equicombinacin La equicombinacin (equireunin o equijoin) es una combinacin que en la condicin C solo tiene igualdades. Es especialmente importante porque permite obtener informacin relacionada por las claves ajenas de las tablas. Combinacin natural Cuando se hace una equicombinacin, la relacin resultante tiene los atributos de las dos relaciones originales. Dado que se est exigiendo igualdad de valores en al menos un atributo, la relacin resultante tendr atributos con informacin repetida (tantos como atributos hayan sido comparados en la condicin C). La combinacin natural es una variante de la equicombinacin donde se eliminan esos atributos superfluos. En SQL, la combinacin natural puede hacerse combinndola con una proyeccin de los atributos de las dos relaciones que excluya alguno de los Operaciones de teora de conjuntos La unin de relaciones es la unin de conjuntos La unin de dos relaciones devuelve una nueva relacin que contiene todas las tuplas que aparecan en cualquiera de las relaciones originales, o en ambas. As, la operacin de unin de dos relaciones R y T, que denominaremos UNION(R, T) slo se puede aplicar el operador unin a dos relaciones que tengan los mismos atributos, o que sean compatibles (es decir, que se pueda establecer una biyeccin entre los atributos de las dos relaciones).

Es importante tener en cuenta lo siguiente:

Se eliminarn las tuplas repetidas. Se entiende que en las dos relaciones no debe haber tuplas con la misma clave primaria y el resto de la informacin diferente.

Si tenemos dividida la informacin de los profesores antiguos y los nuevos en dos relaciones (por ejemplo, por motivos de rendimiento), pero queremos obtener un listado histrico de todos ellos, podemos utilizar el operador UNION de SQL. SELECT * FROM PROFESORES UNION SELECT * FROM EX-PROFESORES El operador UNION requiere que los atributos de las relaciones devueltas por las dos SELECT sean del mismo tipo segn el orden de aparicin. Si en una de las tablas este orden fuese diferente, habra que utilizar una proyeccin que alterase el orden. Los nombres de atributos de la nueva relacin sern los de la primera SELECT. La interseccin de relaciones es la interseccin de conjuntos La interseccin de relaciones toma dos relaciones y devuelve una relacin con las tuplas que aparecan en ambas relaciones originales. Como la unin, la interseccin solo puede aplicarse a relaciones con atributos compatibles. La siguiente consulta en SQL por tanto debera devolver una relacin vaca: SELECT * FROM PROFESORES INTERSECT SELECT * FROM EX-PROFESORES El producto cartesiano combina todas las tuplas de dos relaciones El producto cartesiano es una operacin que toma dos relaciones y obtiene una nueva relacin cuyas tuplas son la concatenacin de las tuplas de la primera relacin con las

tuplas de la segunda. En general, si la primera relacin de entrada tena N tuplas y la segunda M tuplas, el producto cartesiano produce NM tuplas, aunque en ocasiones sern menos dado que las tuplas repetidas habrn de eliminarse. El producto cartesiano de dos relaciones en SQL se obtiene simplemente colocando ms de una tabla en la clusula FROM. SELECT * FROM PROFESORES, DEPARTAMENTOS El producto cartesiano raramente se utiliza en la prctica, pero es interesante conocerlo para diferenciarlo de la operacin de combinacin (join). 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 que incluyen constantes y atributos en el esquema de E. Como caso especial la expresin aritmtica puede ser simplemente un atributo o una constante. Por ejemplo, supngase que se dispone de una relacin informacin-crdito, que da el lmite de crdito y el importe dispuesto hasta el momento presente (el saldo-crdito de la cuenta). Si se desea averiguar el importe disponible por cada persona, se puede escribir la expresin siguiente:

nombre-cliente, lmite saldo-crdito (informacin-crdito) El atributo resultante de la expresin lmite saldo-crdito no tiene un nombre. Se puede aplicar la operacin renombramiento al resultado de la proyeccin generalizada para darle un nombre. Como conveniencia notacional, el renombramiento de atributos se puede combinar con la proyeccin generalizada como se ilustra a continuacin: nombre-cliente, (lmite saldo-crdito) as crdito-disponible (informacin-crdito) Al segundo atributo de esta proyeccin generalizada se le ha dado el nombre crditodisponible. Funciones de agregacin Las funciones de agregacin son funciones que toman una coleccin de valores y devuelven como resultado un nico valor. Por ejemplo, la funcin de agregacin sum toma un conjunto de valores y devuelve la suma de los mismos. Por tanto, la funcin sum aplicada a la coleccin {1, 1, 3, 4, 4, 11} devuelve el valor 24. La funcin de agregacin avg devuelve la media de los valores. Cuando se aplica al conjunto anterior devuelve el valor 4. La funcin de agregacin count devuelve el nmero de elementos del conjunto, y devolvera 6 en el caso anterior. Otras funciones de agregacin habituales son min y max, que devuelven el valor mnimo y el mximo de la coleccin; en el ejemplo anterior devuelven 1 y 11, respectivamente. 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. Estas colecciones se denominan multiconjuntos. Los conjuntos son un caso especial de los multiconjuntos, en los que slo hay una copia de cada elemento. Para ilustrar el concepto de agregacin se utilizar la relacin trabajo-por-horas, que muestra los empleados a tiempo parcial. Supngase que se desea averiguar la suma total de los sueldos de los empleados del banco a tiempo parcial. La expresin del lgebra relacional para esta consulta es: Gsum(sueldo) (trabajo-por-horas) La operacin del lgebra relacional G significa que se debe aplicar agregacin, y el subndice indica la operacin de agregacin a aplicar. El resultado de la expresin anterior

es una relacin con un nico atributo, que contiene una sola fila con un valor correspondiente trabajadores a que la suma en de el los sueldos banco a de todos los parcial.

trabajan

tiempo

Hay casos en los que se deben borrar los valores repetidos antes de calcular una funcin de agregacin. Si se desean borrar los valores repetidos hay que utilizar los mismos nombres de funciones que antes, con la cadena de texto distinct precedida de un guin aadida al final del nombre de la funcin (por ejemplo, count-distinct). La forma general de la operacin de agregacin G es la siguiente:
G1, G2, , GnGF1(A1), F2(A2), , Fm (Am)

(E)

donde E es cualquier expresin del lgebra relacional; G1, G2, , Gn constituye 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. El significado de la operacin se define de la manera siguiente. Las tuplas en el resultado de la expresin E se dividen en grupos tales que 1. Todas las tuplas del grupo tienen los mismos valores para G1, G2, , Gn. 2. Las tuplas de grupos diferentes tienen valores diferentes para G1, G2, , Gn. Por tanto, los grupos pueden identificarse por el valor de los atributos G1, G2, , Gn. Para cada grupo (g1, g2, , gn) el resultado tiene una tupla (g1, g2, , gn, a1, a2, , am) donde, para cada i, ai es el resultado de aplicar la funcin de agregacin Fi al multiconjunto de valores del atributo Ai en el grupo. Como caso especial de la operacin de agregacin, la lista de atributos G1, G2, , Gn puede estar vaca, en cuyo caso slo hay un grupo que contiene todas las tuplas de la relacin. Esto corresponde a la agregacin sin agrupacin. 4. VALORES NULOS. NULL indica que el valor es desconocido. Un valor NULL no es lo mismo que un valor cero o vaco. No hay dos valores NULL que sean iguales. La comparacin entre dos

valores NULL, o entre un valor NULL y cualquier otro valor, tiene un resultado desconocido porque el valor de cada NULL es desconocido. Normalmente, los valores NULL indican que los datos son desconocidos, no aplicables o que se agregarn posteriormente. Por ejemplo, la inicial de un cliente puede que no sea conocida en el momento en que ste hace un pedido. A continuacin se muestra informacin acerca de los valores NULL:

Para comprobar si hay valores NULL en una consulta, use IS NULL o IS NOT NULL en la clusula WHERE.

Cuando se ven los resultados de la consulta en el Editor de cdigo de SQL Server Management Studio, los valores null se muestran como NULL en el conjunto de resultados.

Los valores NULL se pueden insertar en una columna si se indica explcitamente NULL en una instruccin INSERT o UPDATE, si se deja fuera una columna de una instruccin INSERT, o bien si se agrega una columna nueva a una tabla existente con la instruccin ALTER TABLE.

Los valores NULL no se pueden usar en la informacin necesaria para distinguir una fila en una tabla de otra fila, como, por ejemplo, las claves principales.

En el cdigo del programa, puede comprobar la existencia de valores NULL de forma que determinados clculos slo se realicen en filas con datos vlidos, o no NULL. Por ejemplo, un informe slo puede imprimir la columna de seguridad social si en la columna hay datos que no son NULL. Quitar los valores NULL cuando realiza clculos puede ser importante porque algunos clculos (como, por ejemplo, un promedio) pueden ser incorrectos si se incluyen columnas NULL. Si es probable que haya valores NULL almacenados en los datos y no desea que aparezcan valores NULL en los datos, debera crear consultas e instrucciones de modificacin de datos que quiten los valores NULL o los transformen en algn otro valor. Cuando hay valores NULL en los datos, los operadores lgicos y de comparacin pueden devolver un tercer resultado UNKNOWN (desconocido) en lugar de simplemente TRUE (verdadero) o FALSE (falso). Esta necesidad de una lgica de tres valores es el origen de

muchos errores de la aplicacin. En estas tablas se destaca el efecto de escribir comparaciones con NULL. En la tabla siguiente se muestra el resultado de aplicar un operador AND a dos operandos booleanos.

AND TRUE UNKNOWN FALSE

TRUE TRUE UNKNOWN FALSE

UNKNOWN UNKNOWN UNKNOWN FALSE

FALSE FALSE FALSE FALSE

En la tabla siguiente se muestra el resultado de aplicar un operador OR a dos operandos booleanos. OR TRUE UNKNOWN FALSE TRUE TRUE TRUE TRUE UNKNOWN TRUE UNKNOWN UNKNOWN FALSE TRUE UNKNOWN FALSE

En la tabla siguiente se muestra cmo el operador NOT niega, o invierte, el resultado de un operador booleano. Expresin booleana a la que se aplica el operador NOT TRUE UNKNOWN FALSE Se evala como FALSE UNKNOWN TRUE

El estndar ISO usa las palabras clave IS NULL e IS NOT NULL para comprobar la presencia de valores NULL. Expresin booleana a la que se aplica el operador IS NULL TRUE NULL FALSE Se evala como FALSE TRUE FALSE Expresin booleana a la que se Se evala aplica el operador IS NOT NULL como TRUE NULL FALSE TRUE FALSE TRUE

Transact-SQL ofrece tambin una extensin para el procesamiento de los valores NULL. Si la opcin ANSI_NULLS tiene establecido el valor OFF, las comparaciones entre los valores NULL, como NULL = NULL, se evalan como TRUE. Las comparaciones entre NULL y cualquier valor de datos se evala como FALSE. 5. OPERACIONES DE MODIFICACIONES A LA BASE DE DATOS. Como se mencion al inicio de este apartado del SQL, est cuenta con mdulos DDL, para la definicin de datos que nos permite crear o modificar la estructura de las tablas. Las instrucciones para realizar estas operaciones son: CREATE TABLE: Nos permite crear una tabla de datos vaca. INSERT: Permite almacenar registros en una tabla creada. UPDATE: Permite modificar datos de registros almacenados en la tabla. DELETE: Borra un registro entero o grupo de registros de una tabla. CREATE INDEX: Crea un ndice que nos puede auxiliar para las consultas. DROP TABLE: Permite borrar una tabla. DROP INDEX: Borra el ndice indicado. Para ejemplificar las instrucciones anteriores consideremos el ejemplo ALUMNO NControl Nombre A Direccin * Estructura de la sentencia CREATE TABLE. cursa NControl Clave - MATERIA, que tienen los siguientes atributos: Clave NombreM Creditos

Especialidad Calif

CREATE TABLE <Nombre de la tabla> ( Atributo1: tipo de dato longitud , Atributo2: tipo de dato longitud , Atributo3: tipo de dato longitud , : : Atributon: tipo de dato longitud , PRIMARY KEY (Opcional) ); Los campos pueden definirse como NOT NULL de manera opcional excepto en la llave primaria para lo cual es obligatorio. Adems al definir la llave primaria se genera automticamente un ndice con respecto al campo llave; para definir la llave la denotamos dentro de los parntesis de PRIMARY KEY. Ejemplo: Crear la tabla alumno con los atributos antes descritos, tomando como llave el numero de control. CREATE TABLE Alumno ( NControl char (8) NOT NULL, Nombre A char (20), Especialidad char (3), Direccin char (30), PRIMARY KEY (NControl)); Tabla Alumno: NControl Nombre Especialidad Direccin A

Pueden existir ms de una llave primaria, esto es si se requiere, se crearn tantos ndices como llaves primarias se establezcan. Pueden existir tantos campos Not Null (No nulos) como se requieran; En si estructurar la creacin de una tabla es siempre parecida al ejemplo anterior. * Estructura de la sentencia INSERT

INSERT INTO Nombre de la tabla a la que se le va a insertar el registro VALUES (Conjunto de valores del registro); Ejemplo: Insertar en la tabla Alumno, antes creada los datos del alumno Daniel coln, con numero de control 95310518 de la especialidad de Ingeniera civil, con domicilio Abasolo Norte #45. INSERT INTO Alumno VALUES ("95310518","Daniel Coln","IC","Abasolo Norte #45") ; Ntese que la insercin de los datos se realiza conforme la estructura que se implanto en la tabla, es decir en el orden en que se creo dicha tabla. En caso de querer omitir un dato que no sean no nulos solamente se ponen las comillas indicando el vaco de la cadena. * Estructura de la Sentencia CREATE INDEX CREATE INDEX Nombre que se le asignara al ndice. ON Nombre de la taba a la cual se le creara el ndice (Campo(s) por el cual se creara el ndice); Ejemplo: Crear un ndice de la tabla Alumno por el campo Especialidad. CREATE INDEX Indice1 ON Alumno (Especialidad); Este ndice contendr a todos los alumnos ordenados por el campo especialidad. CREATE INDEX UNIQUE INDEX Indice2 ON Alumno (Especialidad);

En la creacin de este ndice utilizamos la sentencia UNIQUE, es un indicador para permitir que se cree un ndice nico por especialidad, esta sentencia siempre se coloca antes de CREATE INDEX. En este ejemplo se creara un ndice que contenga un alumno por especialidad existente. * Estructura de la sentencia UPDATE UPDATE Nombre de la tabla en donde se modificaran los datos. SET Valores WHERE (Condicin); Ejemplo: Modificar el nmero de control del registro de Daniel Coln de la Tabla alumno por el nmero 96310518. UPDATE Alumno SET NControl 96310518 WHERE Nombre A=Daniel Coln; * Estructura de la sentencia DROP TABLE DROP TABLE Nombre de la tabla a borrar ; Ejemplo: Borrar la tabla Alumno creada anteriormente. DROP TABLE Alumno; * Estructura de la sentencia DROP INDEX DROP INDEX Nombre del ndice a borrar; Ejemplo:

Borrar el ndice Indice1 creado anteriormente.

DROP INDEX Indice1; * Estructura de la sentencia DELETE DELETE FROM Nombre de la tabla WHERE Condicin; Ejemplos: - Borrar el registro cuyo nmero de control es 95310386. DELETE FROM Alumno WHERE Control=95310386;

- Borrar todos los registros de la tabla alumno. DELETE FROM Alumno; En el primer ejemplo, se borrara todo el registro(todos los datos), del alumno con nmero de control = 95310386. En el segundo ejemplo se borraran todos los registros de la tabla alumno, pero sin borrar la estructura de la tabla, ya que la orden Delete solo borra registros, la sentencia Drop Table es la que borra toda la estructura de la tabla junto con los registros de la misma.

BIBLIOGRAFIA

SQL y lgebra relacional


Noc ion e s b si c as
Autor : Jrme GABILLAUD Diseo de Base de Datos Relacionales Autor : Adoracion de Miguel, Mario Piattini, Esperanza Marcos. Editorial : Alfa Omega

Potrebbero piacerti anche