Está en la página 1de 20

INDICE

UNIDAD 5 : ALGEBRA
RELACIONAL
5.1_ Operaciones fundamentales
del algebra relacional - - - - - - - - - - - - - - - - - - - - -
- - - - -
5.2_Otras operaciones del
algebra relacional- - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - -
5.3_Algebra relacional extendida-
- - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - -
- - - - -
5.4_Valores nulos- - - - - - - - - - - -
- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
5.5_Operaciones de modificacin
a la base de datos- - - - - - - - - - - - - - - - - - - - - - -
- - - -














INTRODUCCION

Esta informacin proporcionada
en este reporte se trata de la quinta unidad de la
materia de fundamentos de bases de datos a la
cual se le llama Algebra relacional.
En esta unidad veremos las
consultas con los siguientes subtemas:
5.1_ Operaciones fundamentales
del algebra relacional
5.2_Otras operaciones del
algebra relacional
5.3_Algebra relacional extendida
5.4_Valores nulos
5.5_Operaciones de modificacion
a la base de datos

Para esta unidad tendremos que
tener un conocimiento bsico de matematicas
discretas para poder distiguir los diferentes signos
tanto como en las operaciones del algebra
relacional, ver los valores nulos de los datos y ya
una vez aprendido eso aprenderemos a modificar
nuestra base de datos con lo aprendido.















5.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.

Conjunto de operaciones que
toman como argumentos relaciones y retornan
una nueva relacin.
Las operaciones fundamentales
del Algebra relacional son:
Seleccin
Proyeccin
Unin U
Diferencia
Producto cartesiano
Renombramiento

Seleccin

Seleccin de tuplas dado un
predicado lgico.
Por ejemplo,
_valor>10^codigo<500(Productos) selecciona los
productos cuyo valor es mayor a
10 y su codigo menor a 500. En
SQL:
SELECT * FROM PRODUCTOS
WHERE VALOR > 10
AND CODIGO <500;




Proyeccin

Seleccion de uno o varios
atributos de una relacion.
Por ejemplo _codigo(Productos)
retorna todas las tuplas de
productos pero solo con el
atributo codigo. En SQL:
SELECT CODIGO
FROM PRODUCTOS;


Composicin: Combinacion de
dos o mas operadores del
Algebra relacional.
Por ejemplo
_codigo_valor>10^codigo<500(Productos)
Expresion de A.R: Composicion
de varias operaciones de A.R

Unin U

Union de conjuntos de tuplas.
Por ejemplo _cc,saldo(ctas
corriente) [ _cc,saldo(ctas ahorro)
retornara el conjunto 1 de los
saldos y cedulas de las cuentas de
ahorros y de credito. En SQL:
SELECT CODIGO FROM
PRODUCTOS
UNION
SELECT CODIGO FROM
CLIENTES;

Diferencia

Diferencia de Conjuntos de tuplas.
Por ejemplo
_codigo(Estudiantes) _est
codigo_mat codigo=0CC0800(Matriculas)
selecciona los estudiantes que no
han matriculado la materia
CC080. En SQL
SELECT CODIGO FROM
ESTUDIANTES
MINUS
SELECT EST_CODIGO FROM
MATRICULAS
WHERE MAT_CODIGO =
CC080;

Producto cartesiano

Producto cartesiano entre
Conjuntos de tuplas.
Por ejemplo Estudiantes Cursos
retornara la combinacion entre
cada estudiante en Estudiantes
con todos los cursos en la relacion
Cursos. En SQL:
SELECT *
FROM ESTUDIANTES, CURSOS

Renombramiento
Cambio del nombre de una
relacion y/o sus atributos.
Por ejemplo
_emp(c,n,t)(_cod,nom,telEmpleado) retorna una
relacion
con nombre emp y atributos (c, n,
t). En SQL se hace uso de alias
para implementar el
renombramiento, por ejemplo:
SELECT COD C, NOM N, TEL T
FROM EMPLEADOS EMP;


2_OTRAS OPERACIONES DEL
ALGEBRA RELACIONAL


Interseccin de Conjuntos
Interseccin entre conjuntos de
tuplas.
r \ s _ r (r s)

Reunin Natural ()
Producto cartesiano pero existe el
criterio de reunion dado por los
atributos comunes
r ./ s = _R[S (_r .a1=s.a1...r
.an=s.anr s)


Reunin Zeta (./_)
Producto cartesiano pero existe
un criterio de reunion explicito _
r ./_ s = __(r s)
Por ejemplo,
_p.nombre,c.nombre(_p(Profesor
) ./p.codigo=c.pro codigo _c (Curso))
retorna una relacion que contiene
el nombre de cada profesor y sus
respectivos cursos a cargo. En
SQL:
SELECT P.NOMBRE,
C.NOMBRE
FROM PROFESORES P,
CURSOS C
WHERE P.CODIGO =
C.PRO_CODIGO;


Reunin externa (= ) -Derecha o
izquierda-
Realiza el join pero si no hay
match genera un valor nulo. Es util
cuando el atributo FK puede ser
nulo. Por ejemplo, si no todos los
cursos del ejemplo anterior tienen
un profesor asignado, se debe
utilizar la siguiente expresion:
_nombre(Profesor )
./=P.codigo=C.Pro codigo _nombre(Curso) En
SQL :
SELECT P.NOMBRE,
C.NOMBRE
FROM PROFESORES P,
CURSOS C
WHERE C.PRO_CODIGO =
P.CODIGO(= )


Asignacin como en un lenguaje
de programacin:
r1 _codigo,nombre(Profesores)
r2 _nombre,pro codigo(Cursos)
r3 r1 ./r1.codigo=r2.pro codigo r2
r4 _r1nombre,r2nombre(r3)










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:
operacin de lgebra relacional es una relacin,
las tuplas repetidas en el resultado de la
proyeccin se eliminarn.
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
P
o
r

e
j
e
m
p
l
o
,

s
i

t
u
v
i

s
e
m
o
s

l
a

s
i
g
u
i
e
n
t
a
p
e
l
l
i
d
o
s

n
o
m
b
r
e

f
e
c
h
a
-
n
a
c
i
m
i
e
n
t
o

e
s
-
d
o
c
t
o
r

t
e
l

f
o
n
o
-
m

v
i
l

D
_
n
o
m
b
r
e

e

e
x
t
e
n
s
i

n

d
e

l
a

t
a
b
l
a

P
R
O
F
E
S
O
R
E
S
:

d
n
i

3
2
3
2
3

P

r
e
z

J
u
a
n

3
0
/
1
0
/
1
9
6
5
t
r
u
e

6
5
4
5
4
5
4
5

M
a
t
e
m

t
i
c
a
s

4
4
3
4
3
4
3

D

e
z

J
o
s


3
0
/
1
0
/
1
9
7
0

t
r
u
e

6
5
7
8
9
7
6
7

H
i
s
t
o
r
i
a

2
3
4
2
3
4
3
2

S

n
c
h
e
z

J
u
a
n

3
0
/
1
0
/
1
9
8
0

f
a
l
s
e

6
6
7
8
9
8
9
9

M
a
t
e
m

t
i
c
a
s




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 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:
NULL en una consulta, use IS NULL o IS NOT
NULL en la clusula WHERE.
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.
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.
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.

E
n

l
a

t
a
b
l
a

s
i
g
u
i
e
n
t
e

T
R
U
E

U
N
K
N
O
W
N

F
A
L
S
E

s
e

m
u
e
s
t
r
a

e
l

r
e
s
u
l
t
a
d
o

d
e

a
p
l
i
c
a
r

u
n

o
p
e
r
a
d
o
r

A
N
D

a

d
o
s

o
p
e
r
a
n
d
o
s

b
o
o
l
e
a
n
o
s
.

A
N
D

T
R
U
E

T
R
U
E

U
N
K
N
O
W
N

F
A
L
S
E

U
N
K
N
O
W
N

U
N
K
N
O
W
N

U
N
K
N
O
W
N

F
A
L
S
E

F F F F
A
L
S
E

A
L
S
E

A
L
S
E

A
L
S
E


Carlos A.

Carlos
Carlos A.
Car
Car
Carlos
CarloModificacin de la Base de
Datos
Hasta ahora hemos visto como
obtener informacion desde la
Base de Datos.
Es necesario entregar
herramientas para poder alterar el estado
de la Base de Datos.
Eliminacion, Insercion,
Actualizacion son algunas de las tareas
necesarias, usaremos el algebra
relacional.
Eliminacion
Usamos el operador de diferencia
() y asignacion ()
r r E
donde r es una relacion y E una
expresion del algebra relacional.
Eliminar los datos de Soto
empleado
empleado_nombre=Soto(empleado)
Eliminar todos los empleados del
departamento de Marketing
r1
_dep.nombre=Marketing(empleado
departamento)
r2
_emp.nombre,sueldo,emp.cod depto,fech
ing(r1)
empleado empleado r2
nombre sueldo cod dept fecha ing
Torres $ 1.200.000 A1 01/01/2004
Figueroa $ 600.000 A1
01/03/2002
Salas $ 1.500.000 A1 01/01/2002
Ros $ 2.000.000 A3 01/06/2002
Venegas $ 600.000 A1
01/06/2002
Gonzalez $ 2.000.000 A3
01/10/2002
20
Modificacion de la Base de Datos
(cont.)
Insercion
Usamos el operador de union
r r E
donde r es una relacion y E una
expresion del algebra relacional.
Agregar el departamento de
Finanzas con codigo A5 y fecha
de creacion 5/8/2004
departamento departamento
{(Finanzas,A5, 5/8/2004)}
nombre cod dept fecha creac
Informatica A1 01/03/2002
Marketing A2 01/01/2002
Ventas A3 01/01/2001
Recursos Humanos A4
01/01/2003
Finanzas A5 05/08/2004
Actualizacion
A veces queremos cambiar el
valor de algun atributo de una
tupla sin cambiarla entera. Podra
hacerse una eliminacion e
insercion, pero resulta
engorrosos muchas veces.
Usamos un nuevo operador _ (no
reasignamos!):
_AE(r)
que representa el hecho de
cambiar el atributo A por la expresin matemtica
E en la relacin r.
Subir el sueldo de todos los
empleados en%10 si su sueldo
actual es mayor que $1.000.000 y
en %20 si es menor
_sueldosueldo 1,1(_sueldo10
00000(empleado))
_sueldosueldo 1,2(_sueldo<10
00000(empleado))
21
Cuidado con el orden!!!
nombre sueldo cod dept fecha ing
Torres $ 1.320.000 A1 01/01/2004
Soto $ 600.000 A2 01/01/2003
Perez $ 360.000 A2 01/10/2003
Figueroa $ 720.000 A1
01/03/2002
Salas $ 1.650.000 A1 01/01/2002
Ros $ 2.200.000 A3 01/06/2002
Campos $ 960.000 A2 01/11/2003
Venegas $ 720.000 A1
01/06/2002
Carcamo $ 600.000 A2
01/04/2003
Gonzalez $ 2.200.000 A3
01/10/2002

También podría gustarte