Vous êtes sur la page 1sur 70

MODELO RELACIONAL

KarimGuevaraPuentedelaVega
kguevara72@gmail.com
UNSA-2013
Agenda
+Estructura de las base de datos relacionales
+Fundamentos de operaciones de Algebra Relacional
+Operaciones de Algebra Relacional Adicional
+Operaciones de Algebra Relacional Extendida
+Valores Nulos
+Modificacin de las base de datos
B
a
s
e

d
e

D
a
t
o
s

2
Introduccin
+ El modelo relacional se ha establecido actualmente como el
principal modelo de datos para las aplicaciones de
procesamiento de datos.

Su simplicidad, facilita el trabajo del programador en
comparacin con otros modelos anteriores

B
a
s
e

d
e

D
a
t
o
s

3
Introduccin
+ Se describen tres lenguajes formales de consulta:

El primer lenguaje de consulta, el lgebra relacional, que forma la
base del lenguaje de consulta SQL ampliamente usado.

Luego el clculo relacional de tuplas y el clculo relacional de
dominios, que son lenguajes declarativos de consulta basados en la
lgica matemtica.

B
a
s
e

d
e

D
a
t
o
s

4
Estructuras de las BD Relacionales
+ Una base de datos relacional consiste en un conjunto de tablas.
+ Cada fila de la tabla representa una relacin entre un conjunto de
valores.
+ Para cada atributo hay un conjunto de valores permitidos, llamado
dominio de ese atributo.
+ Los valores del atributo se requiere que sean atmicos; eso es,
indivisible.
Un Dominio se dice que es atmico si todos sus miembros son
atmicos.
+ El valor especial nulo es un miembro de cada dominio, que indica
que el valor es desconocido o no existe.


B
a
s
e

d
e

D
a
t
o
s

5
Estructura Bsica
+ Los matemticos definen las relaciones como subconjuntos del
producto cartesiano de la lista de dominios.
+ Supongamos que:
D
1
conjunto de todos los nmeros de cuenta
D
2
conjunto de todos los nombres de sucursal
D
3
conjunto de los saldos.
+ Todas las filas de cuenta deben consistir: (v
1
, v
2
, v
3
)
v
1
es un nmero de cuenta y v
1
e D
1

v
2
es un nombre de sucursal y v
2
e D
2

v
3
es un saldo y v
3
e D
3

+ Cuenta es un subconjunto de:
D
1
x D
2
x D
3



B
a
s
e

d
e

D
a
t
o
s

6
Estructura Bsica
+ Formalmente, dado un conjunto D
1
, D
2
, . D
n
una relacin r es un
subconjunto de:
D
1
x D
2
x x D
n


As, una relacin es un conjunto de n-tuplas:
(a
1
, a
2
, , a
n
)
donde cada a
i
e D
i


B
a
s
e

d
e

D
a
t
o
s

7
Estructura Bsica
+ Ejemplo: Si
nombre_cliente = {Juan, Luis, Sandra, Carol, Lorena, }
calle_cliente = {Mercaderes, Ejercito, Pierola, J.Prado }
ciudad_cliente = {Arequipa, Cuzco, Lima, }
Entonces r = { (Juan, Mercaderes, Arequipa),
(Sandra, Ejercito, Cuzco),
(Carol, Pierola, Arequipa),
(Lindsay, J.Prado, Lima) }

es una relacin sobre
nombre_cliente X calle_cliente X ciudad_cliente

B
a
s
e

d
e

D
a
t
o
s

8
Esquema de la B.D.
+ Cuando se habla de bases de datos se debe diferenciar entre el
esquema de la base de datos, o diseo lgico de la misma, y el
ejemplar de la base de datos, que es una instantnea de los datos.

+ El concepto de relacin se corresponde con el concepto de variable
de los lenguajes de programacin. El concepto de esquema de la
relacin se corresponde con el concepto de definicin de tipos de
los lenguajes de programacin.

B
a
s
e

d
e

D
a
t
o
s

9
Esquema de la Relacin
+ Si A
1
, A
2
, , A
n
son atributos

R = (A
1
, A
2
, , A
n
) es un Esquema de relacin
P.e.:
Esquema_cliente = (nombre_cliente, calle_cliente, ciudad_cliente)

r(R) denota una relacin r en el esquema de relacin R
P.e.:
cliente (Esquema_cliente)

B
a
s
e

d
e

D
a
t
o
s

10
Ejemplar de Relacin
+ Los valores actuales (ejemplar de relacin) de una relacin son
especficos para una tabla
+ Un elemento t de r es una tupla, representado por una fila en una
tabla






+ El orden de las tuplas es irrelevante


B
a
s
e

d
e

D
a
t
o
s

11
Jones
Smith
Curry
Lindsay
nombre_cliente
Main
North
North
Park
calle_cliente
Harrison
Rye
Rye
Pittsfield
ciudad_cliente
Cliente
atributos
(o columnas)
tuplas
(o filas)
Base de Datos
+ Una base de datos consiste de mltiples relaciones.
+ La informacin acerca de una empresa se divide en partes, con
cada relacin almacenando una parte de la informacin.
cuenta: almacena informacin acerca de las cuentas
impositor: almacena informacin acerca de clientes con cuentas
propias.
cliente: almacena informacin acerca de los clientes.

B
a
s
e

d
e

D
a
t
o
s

12
La Relacin Cliente
Esquema_cliente = (nombre_cliente,calle_cliente, ciudad_cliente)
Esquema_impositor=(nombre_liente,nmero_cuenta)

cliente(Esquema_cliente) impositor(Esquema_impositor)


B
a
s
e

d
e

D
a
t
o
s

13
Claves
+ Los conceptos de superclave, de clave candidata y de clave
primaria, tambin son aplicables en el modelo relacional.
+ K es una clave candidata si K es mnimo.
P.e.: {nombre_sucursal} es una clave candidata para Sucursal.

+ Clave Primaria: Una clave candidata que se elige como la principal,
significa que identifica tuplas con una relacin
Debera escoger un atributo cuyos valores nunca, o raramente, cambian.
P.e.: email es nico, pero puede cambiar.

B
a
s
e

d
e

D
a
t
o
s

14
Clave Externa
+ Un esquema de relacin r
1
puede tener un atributo que corresponde
a la clave primaria de otra relacin r
2
. El atributo se llama clave
externa.
+ Relacin referenciante de la dependencia de clave externa: r
1
+ Relacin referenciada de la clave externa: r
2

P.e.: Los atributos nombre_cliente y numero_cuenta de impositor son
claves externas de impositor referenciando a cliente y cuenta
respectivamente.

B
a
s
e

d
e

D
a
t
o
s

15
Diagrama de Esquema
+ Un esquema de bases de datos, junto con las dependencias de
clave primaria y externa, se puede mostrar grficamente mediante
diagramas de esquema.
Diagrama de esquema para el banco

B
a
s
e

d
e

D
a
t
o
s

16
Lenguajes de Consulta
+ Lenguaje a travs del cual el usuario solicita informacin de la
base de datos.
+ Categoras de lenguajes
Procedimental
No-procedimental, o declarativa
+ Lenguajes Puros:
Algebra relacional (proc.)
Calculo relacional de tuplas (no proc.)
Calculo relacional de dominio (no proc.)

B
a
s
e

d
e

D
a
t
o
s

17
Algebra Relacional
+ Lenguaje Procedimental
+ Seis operadores bsicos:
seleccin: o
proyeccin: [
renombramiento:
unin:
diferencia de conjuntos:
producto Cartesiano : x
+ Los operadores toman una o dos relaciones como entrada y
producen una nueva relacin como resultado.

B
a
s
e

d
e

D
a
t
o
s

18
Unarias
Binarias
Seleccin
+ Notacin: se denota con la letra griega sigma minscula ()
o
p
(r)
+ p se llama el predicado de seleccin
Donde p es una frmula en clculo proposicional consistente de
trminos conectados por : . (and), v (or), (not).
P.e.:
o
nombre_sucursal=Navacerrada . importe>1200
(prstamo)

B
a
s
e

d
e

D
a
t
o
s

19
Operaciones bsicas
Proyeccin
+ Notacin: se denota por la letra griega mayscula pi ().


donde A
1
, A
2
son nombres de atributos y r es la relacin.
+ El resultado se define como la relacin de k columnas obtenidas por
la omisin de las columnas que no estn listadas.
+ Las filas duplicadas se remueven del resultado, ya que las
relaciones son conjuntos.

B
a
s
e

d
e

D
a
t
o
s

20
Operaciones bsicas
) r (
k
A , , A , A
2 1
[
Proyeccin (cont.)
+ P.e.: la consulta para crear una lista de todos los nmeros de
prstamo y del importe de los mismos eliminando el atributo
nombre_sucursal de cuenta puede escribirse como:
[
numero_prstamo, importe
(prestamo)



B
a
s
e

d
e

D
a
t
o
s

21
Operaciones bsicas
Unin
+ Notacin: r s
+ Para que r s sea valido se debe cumplir:
1. Las relaciones r y s deben ser de la misma aridad. Es decir,
deben tener el mismo nmero de atributos.

2. Los dominios de los atributos i-simos de r y de s deben ser
iguales para todo i.

B
a
s
e

d
e

D
a
t
o
s

22
Operaciones bsicas
Unin (cont.)
+ P.e.: obtener el nombre de todos los clientes del banco que
tienen una cuenta, un prstamo o ambas cosas.

[
nombre_cliente
(impositor) [
nombre_cliente
(prestatario)

B
a
s
e

d
e

D
a
t
o
s

23
Operaciones bsicas
Diferencia de Conjuntos
+ Notacin: r s
+ La diferencia de conjunto permite buscar las tuplas que estn
en una relacin pero no en la otra, debe ser tomado entre
relaciones compatible.
r y s deben tener la misma aridad
El dominio de atributos de r y s deben ser compatibles

B
a
s
e

d
e

D
a
t
o
s

24
Operaciones bsicas
Diferencia de Conjuntos (cont.)
+ P.e.: obtener los nombres de todos los clientes del banco que
tienen abierta una cuenta pero no tienen concedido ningn
prstamo

nombre_cliente
(impositor)
nombre_cliente
(prestatario)


B
a
s
e

d
e

D
a
t
o
s

25
Operaciones bsicas
Producto Cartesiano
+ Notacin: r x s

+ Permite combinar informacin de cualesquiera dos relaciones r
y s.
+ Se asume que los atributos de r(R) y s(S) son disjuntos. (esto
es, R S = C ).
+ Si los atributos de r(R) y s(S) no son disjuntos, entonces el
renombramiento debe ser usado.

B
a
s
e

d
e

D
a
t
o
s

26
Operaciones bsicas
Producto Cartesiano (cont.)
+ Relaciones r, s



+ r x s
B
a
s
e

d
e

D
a
t
o
s

27
A B
o
|
1
2
A B
o
o
o
o
|
|
|
|
1
1
1
1
2
2
2
2
C D
o
|
|

o
|
|

10
10
20
10
10
10
20
10
E
a
a
b
b
a
a
b
b
C D
o
|
|

10
10
20
10
E
a
a
b
b
r
s
Operaciones bsicas
Producto Cartesiano (cont.)
+ r = prestatario x prstamo es
(nombre_cliente, prestatario.numero_prestamo,
prestamo.numero_prestamo, nombre_sucursal, importe)

B
a
s
e

d
e

D
a
t
o
s

28
Operaciones bsicas
Renombramiento
+ Nos permite nombrar, y por lo tanto referirnos a los resultados de las
expresiones del algebra relacional.
+ Denotado por la letra griega rho minscula (),

x
(E)

devuelve el resultado de la expresin E con el nombre x.
+ Si la expresin del lgebra relacional E tiene aridad n, entonces:


devuelve el resultado de la expresin E con el nombre x y con los
atributos con el nombre cambiado a A
1
, A
2
, ., A
n
.
B
a
s
e

d
e

D
a
t
o
s

29
) (
) ,..., , (
2 1
E
n
A A A x

Operaciones bsicas
Renombramiento (cont.)
+ P.e. : Buscar el mayor saldo de cuenta del banco.
La estrategia para obtener el resultado es:
1. Calcular una relacin intermedia consistente en los saldos que
no sean el mayor y

2. Realizar la diferencia entre la relacin
saldo
(cuenta) y la
relacin intermedia recin calculada.


B
a
s
e

d
e

D
a
t
o
s

30
Operaciones bsicas
Renombramiento (cont.)
+ 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.
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.

B
a
s
e

d
e

D
a
t
o
s

31
Operaciones bsicas
Renombramiento (cont.)

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.

B
a
s
e

d
e

D
a
t
o
s

32
Operaciones bsicas
Renombramiento (cont.)
+ 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)))


B
a
s
e

d
e

D
a
t
o
s

33
Operaciones bsicas
Composicin de Operaciones
+ Se puede construir expresiones usando mltiples operaciones
+ P.e.: o
A=C
(r x s)
+ r x s





+ o
A=C
(r x s)
B
a
s
e

d
e

D
a
t
o
s

34
A B
o
o
o
o
|
|
|
|
1
1
1
1
2
2
2
2
C D
o
|
|

o
|
|

10
10
20
10
10
10
20
10
E
a
a
b
b
a
a
b
b
A B C D E
o
|
|
1
2
2
o
|
|
10
10
20
a
a
b
Operaciones bsicas
Ejemplo de Consultas
B
a
s
e

d
e

D
a
t
o
s

35
+ Encontrar todos los prestamos mayores a $1200
+ Encontrar el numero de prstamo para cada prstamo de un
importe mayor a $1200
o
importe > 1200
(prestamo)

[
numero_prestamo
(o
importe

> 1200
(prestamo))
+ Encontrar los nombre de los clientes que tienen un prstamo,
una cuenta, o ambos del banco
[
nombre_cliente
(prestatario) [
nombre_cliente
(impositor)

Operaciones bsicas
Ejemplo de Consultas (cont.)
B
a
s
e

d
e

D
a
t
o
s

36
+ Encontrar los nombres de todos los clientes que tengan un
prstamo en la sucursal Cayma.

+ Encontrar los nombres de todos los clientes que tengan un
prstamo en la sucursal Cayma pero que no tengan una cuenta
en ninguna sucursal del banco.
[
nombre_cliente
(o
nombre_sucursal=Cayma

(o
prestatario.numero_prestamo = prestamo.numero_prestamo
(prestatario x prestamo)))
[
nombre_cliente
(o
nombre_sucursal = Cayma

(o
prestatario.numero_prestamo = prestamo. numero_prestamo
(prestatario x prestamo)))
[ nombre_cliente(impositor)
Operaciones bsicas
Definicin Formal
+ Las expresiones fundamentales del lgebra relacional se componen
de alguna de las siguientes:
Una relacin de la base de datos
Una relacin constante
{ (C-101, Centro,500) (C-215,Becerril,700) }
+ Sean E1 y E2 expresiones de lgebra relacional. Todas las
siguientes son expresiones del lgebra relacional:
E
1
E
2

E
1
E
2

E
1
x E
2

o
p
(E
1
), P es un predicado de atributos de E
1

[
s
(E
1
), S es una lista que se compone de algunos de los atributos de E
1


x
(E
1
), x es el nuevo nombre del resultado de E
1

B
a
s
e

d
e

D
a
t
o
s

37
Operaciones Adicionales
+ Se define operaciones adicionales que no aaden potencia al
lgebra, pero que simplifican las consultas habituales.
Interseccin de conjuntos
Reunin natural
Divisin
Asignacin

B
a
s
e

d
e

D
a
t
o
s

38
Interseccin de Conjuntos
+ Notacin: r s
+ Definido como: r s = { t | t e r and t e s }
+ Se asume:
r, s tiene la misma aridad
Los atributos de r y s son compatibles
+ Nota: r s = r (r s)

B
a
s
e

d
e

D
a
t
o
s

39
A B
o
o
|
1
2
1
A B
o
|
2
3
r
s
A B
o 2
r s
Operaciones adicionales
Reunin Natural
EPr(nmero_prestamo, nombre_sucursal, importe) Prestamo (EPr)
EPt(nombre_cliente, numero_prestamo) Prestatario(EPt)
+ P.e. Hallar los nombres de todos los clientes que tienen
concedido un prstamo en el banco y averiguar el importe del
mismo
H
nombre_cliente, prstamo.nmero_prstamo, importe
(
prestatario.nmero_prstamo =
prstamo.nmero_prstamo
(prestatario x prstamo))

EPr EPt = {nmero_prestamo}

H
nombre-cliente, nmero-prstamo, importe
(prestatario prstamo)
B
a
s
e

d
e

D
a
t
o
s

40
Epr Ept = {nombre_cliente, nombre_sucursal,
numero_prestamo, importe}
Operaciones adicionales
Reunin Natural

+ Sean dos relaciones r(R) y s(S), la reunin natural de r y de s:
r s
es una relacin del esquema R S definida formalmente:


donde R S = {A
1
, A
2
, , A
n
}.

+ Si R S = C


B
a
s
e

d
e

D
a
t
o
s

41
r s =H
R S
(
r.A1 = s.A1 r.A2 = s.A2 r.An = s.An
r s)
r s = r s
Operaciones adicionales
Reunin Natural (cont.)
+ Relaciones r, s:






+ r s

B
a
s
e

d
e

D
a
t
o
s

42
A B
o
|

o
o
1
2
4
1
2
C D
o

|

|
a
a
b
a
b
B
1
3
1
2
3
D
a
a
a
b
b
E
o
|

o
e
r
A B
o
o
o
o
o
1
1
1
1
2
C D
o
o


|
a
a
a
a
b
E
o

o

o
s
Operaciones adicionales
Divisin
+ Hallar el atributo A de todas los elementos de r cuyo atributo B
aparece en s






+ Resultado:
B
a
s
e

d
e

D
a
t
o
s

43
Operaciones adicionales
Divisin (cont.)
Notacin: r s
+ Adecuada para las consultas que incluyen la expresin para
todos.
+ Dado r(R) y s(S) relaciones donde:
R = (A
1
, , A
m
, B
1
, , B
n
)
S = (B
1
, , B
n
)

r s es una relacin en el esquema: R S = (A
1
, , A
m
),
definido por:
r s = { t | t e [
R-S
(r) . u e s ( tu e r ) }
Donde
tu : concatenacin de tuplas t y u que produce una nica tupla.
B
a
s
e

d
e

D
a
t
o
s

44
S _ R
Operaciones adicionales
Divisin (cont.)
+ Relaciones r, s:






+ r s:

B
a
s
e

d
e

D
a
t
o
s

45
A B
o
o
o
|
|



a
a
a
a
a
a
a
a
C D
o






|
a
a
b
a
b
a
b
b
E
1
1
1
1
3
1
1
1
D
a
b
E
1
1
A B
o

a
a
C


r
s
r s = { t | t e [
R-S
(r) . u e s ( tu e r ) }
Operaciones adicionales
Divisin (cont.)
+ Propiedad
Dado q = r s
entonces q es la relacin mas grande que satisface q x s _ r
+ Definicin con operacin de algebra bsica
Dado r(R) y s(S), donde S _ R:


Probando:
[
R-S, S
(r) simplemente reordena los atributos
de r
[
R-S
(( [
R-S
(r ) x s ) [
R-S, S
(r) ) da estas tuplas t en
[
R-S
(r ) tales que para alguna tupla u e s, tu e r.


B
a
s
e

d
e

D
a
t
o
s

46
r s = [
R-S
(r ) [
R-S
( ( [
R-S
(r ) x s ) [
R-S, S
(r ))

Operaciones adicionales
Ejemplo de Consultas del Banco
1. Encontrar los nombres de todos los clientes que tengan un
prstamo y una cuenta en el banco.
B
a
s
e

d
e

D
a
t
o
s

47
2. Mostrar el nombre del cliente, el nmero y el importe del prstamo,
de todos los clientes que tengan un prstamo en el banco.
[
nombre_cliente
(prestatario) [
nombre_cliente
(impositor)
[
nombre_cliente, numero_prestamo, importe
(prestatario prestamo)
Operaciones adicionales
Ejemplo de Consultas del Banco (cont.)
3. Encontrar todos los clientes que tengan una cuenta en las
sucursales Cayma y Negrita
B
a
s
e

d
e

D
a
t
o
s

48
Consulta 1:

[
nombre_cliente
(o
nombre_sucursal = Cayma
(impositor cuenta ))
[
nombre_cliente
(o
nombre = Negrita
(impositor cuenta))
Note que la consulta 2, usa una relacin constante.
Consulta 2:

[
nombre_cliente, nombre_sucursal
(impositor cuenta)

temp(nombre_sucursal)
({(Cayma ), (Negrita )})
Operaciones adicionales
Ejemplo de Consultas del Banco (cont.)
4. Encontrar todos los clientes (nombre del cliente y de la sucursal)
que tenga una cuenta en todas las sucursales ubicadas en
Arequipa.
B
a
s
e

d
e

D
a
t
o
s

49

[
nombre_cliente, nombre_sucursal
(impositor cuenta)
[
nombre_sucursal
(o
ciudad_sucursal = Arequipa
(sucursal))
Operaciones adicionales
Asignacin
+ La operacin de asignacin () provee un modo conveniente para expresar
consultas complejas.
podemos escribir consultas como un programa secuencial consistente:
Una serie de asignaciones
Seguido por una expresin cuyos valores se muestran como un resultado
de una consulta.
La asignacin debe siempre ser hecha para una variable de relacin temporal.
+ P.e: escribir r s con
temp1

[
R-S
(r )
temp2 [
R-S
((temp1 x s ) [
R-S,S
(r ))
result = temp1 temp2
El resultado a la derecha de se asigna a la variable relacin a la izquierda
de .
Se puede usar la variable relacin en expresiones posteriores.

B
a
s
e

d
e

D
a
t
o
s

50
Operaciones adicionales
Operaciones del Algebra Relacional
Extendida
+ Proyeccin Generalizada - ampla la operacin proyeccin
permitiendo que se utilicen funciones aritmticas en la lista de
proyeccin. La operacin proyeccin generalizada tiene la forma.


E es cualquier expresin del lgebra relacional
F
1
, F
2
, , F
n
son expresiones aritmticas que incluyen constantes y
atributos en el esquema de E.
P.e.: dada la relacin informacin_credito(nombre_cliente, limite,
saldo_credito), encontrar cunto como mximo puede gastar cada
persona:
[
nombre_cliente, limite saldo_credito
(informacin_credito)
[
nombre_cliente, (limite saldo_credito) as credito_disponible
(informacin_credito)
B
a
s
e

d
e

D
a
t
o
s

51
) ( ,..., ,
2 1
E
n
F F F
[
Operaciones del Algebra Relacional
Extendida (cont.)
+ Funciones de Agregacin son funciones que toman una coleccin de
valores y devuelven como resultado un nico valor.
avg: valor promedio
min: valor mnimo
max: valor mximo
sum: suma de valores
count: numero de valores
+ Operacin de agregacin en algebra relacional


E es cualquier expresin de algebra relacional
G
1
, G
2
, G
n
es una lista de atributos en el cual agrupa (puede ser vaco)
Cada F
i
es una funcin de agregacin
Cada A
i
es un nombre de atributo

B
a
s
e

d
e

D
a
t
o
s

52
) ( ,..., , ,..., ,
) ( ) ( ) (
2 2 1 1 2 1
E
m m N
A F A F A F G G G
G
Operaciones del Algebra Relacional
Extendida (cont.)
+ Operacin de Agregacin

Relacin r





g
sum(c)
(r)

B
a
s
e

d
e

D
a
t
o
s

53
A B
o
o
|
|
o
|
|
|
C
7
7
3
10
sum(c )
27
Operaciones del Algebra Relacional
Extendida (cont.)
+ Operacin de Agregacin
Relacin cuenta agrupado por nombre_sucursal
B
a
s
e

d
e

D
a
t
o
s

54
nombre_sucursal
G
sum(saldo)
(cuenta)
nombre_sucursal numero_cuenta saldo
Cayma
Cayma
San Camilo
San Camilo
Negrita
A-102
A-201
A-217
A-215
A-222
400
900
750
750
700
nombre_sucursal sum(saldo)
Cayma
San Camilo
Negrita
1300
1500
700
Operaciones del Algebra Relacional
Extendida (cont.)
+ El resultado de la agregacin no tiene un nombre
Puede usar la operacin renombramiento para darle un nombre
Por conveniencia, permitimos renombrar como parte de la
operacin de agregacin.


B
a
s
e

d
e

D
a
t
o
s

55
Nombre_sucursal
G
sum(saldo) as sum_saldo
(cuenta)
Operaciones del Algebra Relacional
Extendida (cont.)
+ Reunin Externa es una ampliacin de la operacin reunin
para trabajar con la informacin que falta.
+ Calcula la reunin y luego agrega al resultado las tuplas que no
coinciden con ninguna tupla en la otra relacin.
+ Usa valores nulos:
nulo significa que el valor es desconocido o no existe
Todas las comparaciones que involucran nulos son falsos por
definicin.

B
a
s
e

d
e

D
a
t
o
s

56
Operaciones del Algebra Relacional
Extendida (cont.)
+ Reunin Externa







Reunin
prstamo prestatario





B
a
s
e

d
e

D
a
t
o
s

57
numero_prestamo importe
L-170
L-230
3000
4000
nombre_cliente
Juan
Sandra
nombre_sucursal
San Camilo
Negrita
Operaciones del Algebra Relacional
Extendida (cont.)
+ Reunin Externa







Reunin externa izquierda
prestamo prestatario


B
a
s
e

d
e

D
a
t
o
s

58
Juan
Sandra
null
numero_prestamo importe
L-170
L-230
L-260
3000
4000
1700
nombre_cliente nombre_sucursal
San Camilo
Negrita
Cayma
Operaciones del Algebra Relacional
Extendida (cont.)
+ Reunin Externa







Reunin externa derecha
prstamo prestatario





B
a
s
e

d
e

D
a
t
o
s

59
numero_prestamo importe
L-170
L-230
L-155
3000
4000
null
nombre_cliente
Juan
Sandra
Hugo
nombre_sucursal
San Camilo
Negrita
null
Operaciones del Algebra Relacional
Extendida (cont.)
+ Reunin Externa







Reunin externa completa
prestamo prestatario


B
a
s
e

d
e

D
a
t
o
s

60
numero_prestamo importe
L-170
L-230
L-260
L-155
3000
4000
1700
null
nombre_cliente
Juan
Sandra
null
Hugo
nombre_sucursal
San Camilo
Negrita
Cayma
null
Valores Nulos (valor desconocido / inexistente)
+ El resultado de cualquier expresin aritmtica (+, -, *, /) que
involucra un valor null es null.
+ Las comparaciones evalan el nulo como el valor
desconocido.
+ Las funciones de agregacin simplemente ignoran valores
nulos (como en SQL)
+ Para eliminacin de duplicados y de agrupamiento, nulo es
tratado como cualquier otro valor, si hay dos nulos, slo se
considera uno (como en SQL)

B
a
s
e

d
e

D
a
t
o
s

61
Valores Nulos (cont.)
+ Comparacin con valores nulos, retorna el valor verdadero especial :
desconocido
+ Tres valores lgicos usando el valor verdadero desconocido:
AND: (cierto and desconocido) = desconocido
(falso and desconocido) = falso
(desconocido and desconocido) = desconocido
OR: (desconocido or cierto) = cierto
(desconocido or falso) = desconocido
(desconocido or desconocido) = desconocido
NOT: (not desconocido) = desconocido
En SQL P es desconocido evala a verdadero si el predicado
P se evala como desconocido

B
a
s
e

d
e

D
a
t
o
s

62
Valores Nulos (cont.)
+ Seleccin: si P es cierto, se aade t al resultado, de lo contrario no.
+ Reunin natural: si t
r
e r, t
s
e s, tienen un valor nulo en un atributo
comn, las tuplas no coinciden.
+ Proyeccin: los duplicados los elimina (incertidumbre).
+ Unin, interseccin, diferencia: igual que proyeccin
+ Proyeccin generalizada: como proyeccin.
Atributos agregados: se elimina los valores nulos y aplica agregacin.
Si el resultado es el conjunto vaco, devuelve nulo.
+ Reunin externa: igual que reunin, excepto sobre las tuplas que
no aparecen en el resultado, que pueden ser aadidas por medio de
nulos segn sean el tipo de reunin.
B
a
s
e

d
e

D
a
t
o
s

63
Modificacin de las bases de datos
+ El contenido de la base de datos puede ser modificado usando
las siguientes operaciones:
Eliminacin
Insercin
Actualizando
+ Todas estas operaciones son expresadas usando el operador
de asignacin.

B
a
s
e

d
e

D
a
t
o
s

64
Eliminacin
r r - E
+ E: consulta en el algebra relacional
+ P.e.: eliminar todos los prstamos con importe entre 0 y 50



B
a
s
e

d
e

D
a
t
o
s

65
Eliminar todas la cuentas de las sucursales ubicadas en
Arequipa.
prestamo prestamo - o
importe > 0 and importe s 50
(prestamo)
r1 o
ciudad_sucursal=Arequipa
( cuenta sucursal)
r2 [
nombre_sucursai, numero_cuenta, saldo
(r1)
cuenta cuenta r2
Insercin
r r U E
+ E: consulta en el algebra relacional o una relacin constante
+ Las tuplas insertadas deben de ser de la aridad correcta, y los
valores de los atributos del mismo dominio.
+ P.e.: se debe de otorgar una cuenta de ahorro con $200 como regalo
a todos los clientes con prstamos en la sucursal Negrita (Utilice el
nmero de prstamo como nmero de cuenta)



B
a
s
e

d
e

D
a
t
o
s

66
r1 (o
nombre_Sucursal=Negrita
( prestatario prestamo))
r2 [
numero_prestamo, nombre_sucursal
(r1)
cuenta cuenta U (r2 x {(200)})
impositor impositor U [
nombre_cliente, numero_prestamo
(r1)
Actualizacin
r [
F1, F2, , Fn
( r )
Fi: i-simo atributo de r que se desea actualizar
+ Actualizar ciertas tuplas:
r [
F1, F2, , Fn
( o
p
( r ) ) U (r - o
p
( r ) )
+ P.e.: actualizar todos los saldos de las cuentas en 5% por pago de
intereses



B
a
s
e

d
e

D
a
t
o
s

67
cuenta [
nombre_sucursal, numero_cuenta, saldo*1.05
(cuenta)
Las cuentas con saldo mayores a 5000 reciben un inters del 6%.
cuenta [
nombre_sucursal, numero_cuenta, saldo*1.06
(o
saldo>5000
(cuenta))
U (cuenta - o
saldo>5000
(cuenta))
Vistas
create view v as <expresin de consultas>
+ P.e.: todos los clientes que tienen una cuenta o un prstamo o
ambos



B
a
s
e

d
e

D
a
t
o
s

68
luego:
[
nombre_cliente
(o
nombre_sucursal = Cayma
(todos_clientes))
create view todos_clientes as
[
nombre_sucursal, nombre_cliente
(impositor cuenta)
U [
nombre_sucursal, nombre_cliente
(prestatario prestamo)
+ Las vistas se recalculan al cambiar sus relaciones subyacentes.
+ Vistas materializadas: se almacena la relacin de vista.
Vistas (cont.)


+ Si se insertar
B
a
s
e

d
e

D
a
t
o
s

69
Rechazar la insercin
Insertar en prstamo: (P-60,Cayma, nulo)
prestamo_sucursal prestamo_sucursal U {(Cayma, P-60)}
create view prestamo_sucursal as
[
nombre_sucursal, numero_prestamo
(prestamo)
numero_prestamo importe
L-170
L-230
P-60
3000
4000
null
nombre_sucursal
San Canilo
Negrita
Cayma
Vistas (cont.)


+ Luego:
B
a
s
e

d
e

D
a
t
o
s

70
inf_credito inf_credito U {(Salazar, 1900)}
create view inf_credito as
[
nombre_cliente, importe
(prestatario prestamo)
numero_prestamo importe
L-170
L-230
nulo
3000
4000
1900
nombre_sucursal
San Canilo
Negrita
nulo
nombre_cliente
Gonzales
Talavera
Salazar
numero_prestamo
L-170
L-230
null
Relacin Prestamo
Relacin Prestatario

Vous aimerez peut-être aussi