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 ) y B=(b , b , ..., b )


respectivamente.

Restriccin
: R WHERE condicin
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 Nombr Apellid Telfon Fecha_n Salari Onu


Direccin Puesto DNI
m e o o ac o m
964
EL2 Ameli Magallane 3000 3943221
Pastor 284 Director 12/10/62 O5
1 a s, 15 0 2E
560
Castelln
964
EG3 Cubed Bayarri, Supervis 1800 3876662
Pedro 535 24/3/57 O3
7 o 11 or 0 3X
690
Villarreal
964
Casalduc Supervis 1800 3923319
EA9 Rita Renau 257 19/5/60 O7
h, 32 or 0 0F
550
Castelln
964
2400 2564430
EG5 Julio Prats Melilla, 23 524 Director 19/12/50 O3
0 9X
590
Villarreal
964
EL4 Herrero, Supervis 1800 3955213
Carlos Baeza 247 29/2/67 O5
1 51 or 0 3T
250
Castelln

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


IL94 Riu Ebre, 24 Ronda Sur Castelln Piso 4 350 P87
IG4 Sorell, 5 Grao Castelln Piso 3 300 P40
IG36 Alicante,1 Segorbe Piso 3 325 P93
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 Pastor 30000
EG37 Pedro Cubedo 18000
EG14 Luis Collado 12000
EA9 Rita Renau 18000
EG5 Julio Prats 24000
EL41 Carlos Baeza 18000
Ejemplo 4.4 Obtener los distintos puestos que pueden ocupar los empleados.
PLANTILLA [puesto]

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 atributos, la relacin

resultado tendr tuplas y 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 Juan Felip Q56 IA14 muy pequeo
Q76 Juan Felip Q76 IG4 muy lejos
Q76 Juan Felip Q56 IG4
Q76 Juan Felip Q62 IA14 no tiene saln
Q76 Juan Felip Q56 IG36
Q56 Ana Grangel Q56 IA14 muy pequeo
Q56 Ana Grangel Q76 IG4 muy lejos
Q56 Ana Grangel Q56 IG4
Q56 Ana Grangel Q62 IA14 no tiene saln
Q56 Ana Grangel Q56 IG36
Q74 Elena Abaso Q56 IA14 muy pequeo
Q74 Elena Abaso Q76 IG4 muy lejos
Q74 Elena Abaso Q56 IG4
Q74 Elena Abaso Q62 IA14 no tiene saln
Q74 Elena Abaso Q56 IG36
Q62 Alicia Mori Q56 IA14 muy pequeo
Q62 Alicia Mori Q76 IG4 muy lejos
Q62 Alicia Mori Q56 IG4
Q62 Alicia Mori Q62 IA14 no tiene saln
Q62 Alicia Mori Q56 IG36

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] TIMES VISITA[qnum,inum,comentario])
WHERE inquilino.qnum=visita.qnum

El resultado de esta operacin se muestra a continuacin.

INQUILINO.Qnum Nombre Apellido VISITA.Qnum Inum Comentario


Q76 Juan Felip Q76 IG4 muy lejos
Q56 Ana Grangel Q56 IA14 muy pequeo
Q56 Ana Grangel Q56 IG4
Q56 Ana Grangel Q56 IG36
Q62 Alicia Mori Q62 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 UNION S

La unin de dos relaciones R y S, con y tuplas respectivamente, es otra

relacin que tiene como mucho 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 Obtener un listado de las reas en las que hay oficinas o inmuebles para
alquilar.
OFICINA[rea] UNION INMUEBLE[rea]

Area
Centro
Grao
Ronda Sur
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 Castelln Q56 24/11/99 muy pequeo
IA14 Enmedio, 128 Castelln Q62 14/11/99 no tiene saln
IL94 Riu Ebre, 24 Castelln
IG4 Sorell, 5 Castelln Q76 20/10/99 muy lejos
IG4 Sorell, 5 Castelln Q56 26/11/99
IG36 Alicante,1 Segorbe Q56 28/10/99
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 48000
O3 54000
O7 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 crdito-


disponible.

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 a la suma de los sueldos de todos los
trabajadores que trabajan en el banco a tiempo parcial.
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 Se evala como

TRUE FALSE

UNKNOWN UNKNOWN

FALSE 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 evala Expresin booleana a la que se Se evala


se aplica el operador IS NULL como aplica el operador IS NOT NULL como
TRUE FALSE TRUE TRUE

NULL TRUE NULL FALSE

FALSE FALSE 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 - cursa - MATERIA, que tienen los siguientes atributos:
NControl NControl Clave
Nombre A Clave NombreM
Especialidad Calif Creditos
Direccin

* Estructura de la sentencia CREATE TABLE.


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:

Nombre
NControl 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