Anda di halaman 1dari 115

3.

1 Introduccin a los Sistemas de Bases de Datos


El modelo relacional
Estructura de las bases de datos relacionales
lgebra relacional
Operaciones de lgebra relacional extendida

3.2 Introduccin a los Sistemas de Bases de Datos
Ejemplo de una relacin
3.3 Introduccin a los Sistemas de Bases de Datos
Estructura bsica
Formalmente, dados los conjuntos D
1
, D
2
, . D
n
una relacin r es
un subconjunto de D
1
x D
2
x x D
n

Por tanto una relacin es un conjunto de n-tuplas (a
1
, a
2
, , a
n
)
donde a
i
e D
i

Ejemplo: si
nombre-cliente = {Gmez, Prez, Lpez, Garca}
calle-cliente = {Gonzalitos, Norte, Linda Vista}
ciudad-cliente = {Monterrey, San Pedro, Guadalupe}
Entonces r = { (Gmez, Gonzalitos, Monterrey),
(Prez, Norte, San Pedro),
(Lpez, Norte, San Pedro),
(Garca, Linda vista, Guadalupe)}
es una relacin entre nombre-cliente x calle-cliente x ciudad-cliente
3.4 Introduccin a los Sistemas de Bases de Datos
Tipos de atributos
Cada atributo de una relacin tiene un nombre
El conjunto de valores permitidos para cada atributo se conoce
como el dominio del atributo
El valor especial null es un miembro de cada dominio
El valor nulo causa complicaciones en la definicin de muchas
operaciones
Ignoraremos el efecto de los valores nulos en nuestra presentacin
principal y consideraremos sus efectos posteriormente
3.5 Introduccin a los Sistemas de Bases de Datos
Esquema de la relacin
A
1
, A
2
, , A
n
son atributos
R = (A
1
, A
2
, , A
n
) es un esquema de la relacin
Por ejemplo, esquema-cliente =
(nombre-cliente, calle-cliente, ciudad-cliente)
3.6 Introduccin a los Sistemas de Bases de Datos
Ejemplar de relacin
Los valores actuales (ejemplar, ocurrencia de
relacin) de una relacin se especifican con una
tabla
Un elemento t de r es una tupla, representada por
una fila en una tabla
atributos
Gmez
Prez
Lpez
Garca
nombre-cliente
Gonzalitos
Norte
Norte
Linda Vista
calle-cliente
Monterrey
San Pedro
San Pedro
Guadalude
ciudad-cliente
cliente
tuplas
3.7 Introduccin a los Sistemas de Bases de Datos
Las relaciones no estn ordenadas
El orden de las tuplas no es importante (se pueden
almacenar en cualquier orden)
Por ejemplo, la relacin cuenta con las tuplas sin ordenar
3.8 Introduccin a los Sistemas de Bases de Datos
Bases de datos
Una base de datos est compuesta por mltiples relaciones
La informacin sobre una empresa se divide en partes. Cada relacin
contiene una parte de la informacin
Por ejemplo: cuenta: contiene informacin sobre las cuentas
cuenta-habiente: contiene informacin sobre que cliente
posee que cuenta
cliente: contiene informacin sobre los clientes
Almacenar toda la informacin como una relacin simple tal como
banco(nmero-cuenta, saldo, nombre-cliente, ..)
da como resultado
repeticin de informacin (por ejemplo, dos clientes poseen una
cuenta)
la necesidad de valores nulos (por ejemplo, representar un cliente
sin cuenta)
La teora de la normalizacin (se ver en Bases de Datos) explica
cmo disear esquemas relacionales
3.9 Introduccin a los Sistemas de Bases de Datos
La relacin cliente
3.10 Introduccin a los Sistemas de Bases de Datos
La relacin impositor
3.11 Introduccin a los Sistemas de Bases de Datos
Diagrama E-R para un banco
3.12 Introduccin a los Sistemas de Bases de Datos
Diagrama esquemtico para el banco
3.13 Introduccin a los Sistemas de Bases de Datos
Lenguajes de consulta
Lenguajes en los que los usuarios solicitan
informacin de la base de datos.
Categoras de los lenguajes
procedimental
no-procedimental
Lenguajes puros:
lgebra relacional
Clculo relacional de tuplas
Clculo relacional de dominios
Los lenguajes puros forman las bases subyacentes de
los lenguajes de consulta que utilizan las personas.
3.14 Introduccin a los Sistemas de Bases de Datos
lgebra relacional
Lenguaje procedimental
Seis operaciones bsicas
seleccin
proyeccin
unin
diferencia de conjuntos
producto cartesiano
renombramiento
Las operaciones toman dos o ms relaciones como
entrada y producen como resultado una nueva
relacin.
3.15 Introduccin a los Sistemas de Bases de Datos
Operacin seleccin Ejemplo
Relacin r A B C D
o
o
|
|
o
|
|
|
1
5
12
23
7
7
3
10
o
A=B ^ D > 5
(r)
A B C D
o
|
o
|
1
23
7
10
3.16 Introduccin a los Sistemas de Bases de Datos
Operacin seleccin
Notacin: o
p
(r)
p condicin de seleccin se denomina predicado de la
seleccin
Definido como:
o
p
(r) = {t | t e r y p(t)}
Donde p es una frmula de clculo proposicional
compuesta por trminos conectados por: . (y), v (o), (no)
Cada trmino es uno de:
<atributo> op <atributo> o <constante>
donde op es uno de: =, =, >, >. <. s
Ejemplo de seleccin:
o
nombre-sucursal=UDEM
(cuenta)
3.17 Introduccin a los Sistemas de Bases de Datos
Operacin proyeccin Ejemplo
Relacin r:
A B C
o
o
|
|
10
20
30
40
1
1
1
2
A C
o
o
|
|
1
1
1
2
=
A C
o
|
|
1
1
2
[
A,C
(r)
3.18 Introduccin a los Sistemas de Bases de Datos
Operacin proyeccin
Notacin:
[
A1, A2, , Ak
(r)

donde A
1
, A
2
son nombres de atributos y r es un nombre de
relacin.
El resultado se define como la relacin de k columnas obtenidas
borrando las columnas que no aparecen
Las filas duplicadas se eliminan del resultado, ya que las
relaciones son conjuntos
Por ejemplo, Para eliminar el atributo nombre-sucursal de cuenta
[
nmero cuenta, saldo
(cuenta)

3.19 Introduccin a los Sistemas de Bases de Datos
Operacin unin Ejemplo
Relaciones r, s:
r s:
A B
o
o
|
1
2
1
A B
o
|
2
3
r
s
A B
o
o
|
|
1
2
1
3
3.20 Introduccin a los Sistemas de Bases de Datos
Operacin unin
Notacin: r s
Definido como:
r s = {t | t e r o t e s}
Para que r s sea vlido.
1. r, s deben tener el mismo grado (el mismo nmero de atributos)
2. Los dominios de los atributos deben ser compatibles
respectivamente (por ejemplo, 2 columna de r maneja los mismos
tipos de valores que la 2 columna de s)
Por ejemplo, para encontrar todos los clientes con una cuenta o con un
prstamo
[
nombre-cliente
(impositor) [
nombre-cliente
(prestatario)
3.21 Introduccin a los Sistemas de Bases de Datos
Operacin diferencia de conjuntos
Ejemplo
Relaciones r, s:
r s:
A B
o
o
|
1
2
1
A B
o
|
2
3
r
s
A B
o
|
1
1
3.22 Introduccin a los Sistemas de Bases de Datos
Operacin diferencia de conjuntos
Notacin r s
Definido como:
r s = {t | t e r y t e s}
Las diferencias de conjuntos deben realizarse entre
relaciones compatibles.
r y s deben tener el mismo grado
los dominios de los atributos de r y s deben ser
compatibles

3.23 Introduccin a los Sistemas de Bases de Datos
Operacin producto cartesiano -
Ejemplo
Relaciones r, s:
r x s:
A B
o
|
1
2
A B
o
o
o
o
|
|
|
|
1
1
1
1
2
2
2
2
C D
o
|
|

o
|
|

10
19
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
3.24 Introduccin a los Sistemas de Bases de Datos
Operacin producto cartesiano
Notacin r x s
Definido como:
r x s = {t q | t e r y q e s}
Supone que los atributos de r(R) y s(S) son disjuntos. (Es decir,
R S = C).
Si los atributos de r(R) y s(S) no son disjuntos, se debe utilizar el
renombramiento.
3.25 Introduccin a los Sistemas de Bases de Datos
Composicin de operaciones
Permite obtener expresiones que utilizan operaciones mltiples
Ejemplo: o
A=C
(r x s)
r x s






o
A=C
(r x s)
A B
o
o
o
o
|
|
|
|
1
1
1
1
2
2
2
2
C D
o
|
|

o
|
|

10
19
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
20
20
a
a
b
3.26 Introduccin a los Sistemas de Bases de Datos
Operacin renombramiento
Nos permite nombrar y por lo tanto referirnos a los resultados de
expresiones de lgebra relacional.
Nos permite referirnos a una relacin por ms de un nombre.
Ejemplo:

x
(E)
devuelve la expresin E bajo el nombre X
Si una expresin de lgebra relacional E tiene grado n, entonces

x

(A1, A2, , An)
(E)
devuelve el resultado de la expresin E bajo el nombre X, y con los
atributos renombrados como A1, A2, ., An.

3.27 Introduccin a los Sistemas de Bases de Datos
Ejemplo de banco
sucursal (nombre-sucursal, ciudad-sucursal, activos)

cliente (nombre cliente, calle-cliente, solo-cliente)

cuenta (nmero-cuenta, nombre sucursal, saldo)

prstamo (nmero-prstamo, nombre-sucursal, importe)

impositor (nombre-cliente, nmero cuenta)

prestatario (nombre-cliente, nmero-prstamo)
3.28 Introduccin a los Sistemas de Bases de Datos
Consultas de ejemplo
Buscar todos los prstamos superiores a 1200
o
importe
> 1200 (prstamo)
Averiguar el nmero de prstamo para cada prstamo de ms
de 1200
[
nmero-prstamo
(o
cantidad
> 1200 (prstamo))
3.29 Introduccin a los Sistemas de Bases de Datos
Consultas de ejemplo
Averiguar los nombres de todos los clientes que tienen un
prstamo, una cuenta o ambos, en el banco
[
nombre-cliente
(prestatario) [
nombre-cliente
(impositor)
Averiguar los nombres de todos los clientes que tienen un
prstamo y una cuenta en el banco.
[
nombre-cliente
(prestatario) [
nombre-cliente
(impositor)
3.30 Introduccin a los Sistemas de Bases de Datos
Consultas de ejemplo
Averiguar los nombres de todos los clientes que tienen un prstamo en
la sucursal de Navacerrada.
[
nombre-cliente
(o
nombre-sucursal=Navacerrada

(o
prestatario.nmero-prstamo = prstamo.nmero-prstamo
(prestatario x prstamo)))
Averiguar los nombres de todos los clientes que tienen un prstamo en
la sucursal de Navacerrada pero no tienen cuenta en ninguna sucursal
del banco.
[
nombre-cliente
(o
nombre-sucursal = Navacerrada

(o
prestatario.nmero-prstamo = prstamo.nmero-prstamo
(prestatario x prstamo)))

[
nombre-cliente
(impositor)
3.31 Introduccin a los Sistemas de Bases de Datos
Consultas de ejemplo
Averiguar los nombres de todos los clientes que tienen un prstamo en
la sucursal de Navacerrada.
Consulta 1
[
nombre-cliente
(o
nombre-sucursal = Navacerrada

(o
prestatario.nmero-prstamo = prstamo.nmero-prstamo
(prestatario x prstamo)))
Consulta 2
[
nombre-cliente
(o
prstamo.nmero-prstamo = prestatario.nmero-prstamo
(
(o
nombre-sucursal = Navacerrada
(prstamo)) x prestatario))
3.32 Introduccin a los Sistemas de Bases de Datos
Consultas de ejemplo
Averiguar el mayor saldo de cuenta
Renombrar la relacin cuenta como d
La consulta es:
3.33 Introduccin a los Sistemas de Bases de Datos
Definicin formal
Una expresin bsica en el lgebra relacional se compone de una de
las siguientes:
Una relacin en la base de datos
Una relacin constante
Sean E
1
y E
2
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 alguno de los atributos de E
1


x
(E
1
), x es el nuevo nombre del resultado de E
1
3.34 Introduccin a los Sistemas de Bases de Datos
Operaciones adicionales
Definimos operaciones adicionales que no aaden potencia al
lgebra relacional, pero que simplifican las consultas habituales.
Interseccin de conjuntos
Reunin natural
Divisin
Asignacin
3.35 Introduccin a los Sistemas de Bases de Datos
Operacin interseccin de conjuntos
Notacin: r s
Definido como:
r s ={ t | t e r y t e s }
Suponiendo:
r, s tienen la misma aridad
los atributos de r y s son compatibles
Nota: r s = r - (r - s)
3.36 Introduccin a los Sistemas de Bases de Datos
Operacin interseccin de conjuntos -
Ejemplo
Relacin r, s:




r s
A B
o
o
|
1
2
1
A B
o
|
2
3
r
s
A B
o 2
3.37 Introduccin a los Sistemas de Bases de Datos
Operacin reunin natural
Notacin: r s
Sean r y s relaciones de los esquemas R y S respectivamente. El
resultado es una relacin del esquema R S que se obtiene
considerando cada par de tuplas t
r
de r y t
s
de s.
Si t
r
y t
s
tienen el mismo valor en cada uno de los atributos de R S, se
aade una tupla t al resultado, donde
t tiene el mismo valor que t
r
en r
t tiene el mismo valor que t
s
en s
Ejemplo:
R = (A, B, C, D)
S = (E, B, D)
Esquema resultante = (A, B, C, D, E)
r s se define como:
[
r.A, r.B, r.C, r.D, s.E
(o
r.B = s.B r.D = s.D
(r x s))
3.38 Introduccin a los Sistemas de Bases de Datos
Operacin reunin natural Ejemplo
Relaciones r, s:
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
r s
3.39 Introduccin a los Sistemas de Bases de Datos
Operacin divisin
Pensada para las consultas que incluyen la frase para
todos.
Sean r y s relaciones de los esquemas R y S
respectivamente, donde
R = (A
1
, , A
m
, B
1
, , B
n
)
S = (B
1
, , B
n
)
El resultado de r s es una relacin del esquema
R S = (A
1
, , A
m
)

r s = { t | t e [
R-S
(r) . u e s ( tu e r ) }
r s
3.40 Introduccin a los Sistemas de Bases de Datos
Operacin divisin Ejemplo
Relaciones r, s:
r s:
A
B
o
|
1
2
A B
o
o
o
|

o
o
o
e
e
|
1
2
3
1
1
1
3
4
6
1
2
r
s
3.41 Introduccin a los Sistemas de Bases de Datos
Otro ejemplo de divisin
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
Relaciones r, s:
r s:
D
a
b
E
1
1
A B
o

a
a
C


r
s
3.42 Introduccin a los Sistemas de Bases de Datos
Operacin divisin (Cont.)
Propiedad
Sea q r s
Entonces q es la mayor relacin que cumple q x s _ r
Definicin en trminos de operacin de lgebra bsica
Sean r(R) y s(S) relaciones, y sea S _ R

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

Para ver por qu
[
R-S,S
(r) simplemente reordena atributos de r

[
R-S
([
R-S
(r) x s) [
R-S,S
(r)) da aquellas tuplas t en

[
R-S
(r) tales que para una tupla u e s, tu e r.

3.43 Introduccin a los Sistemas de Bases de Datos
Operacin asignacin
La operacin asignacin () proporciona una forma conveniente
de expresar consultas complejas, de escribir una consulta como
un programa secuencial compuesto de series de asignaciones
seguidas por una expresin cuyo valor se muestra como
resultado de la consulta.
La asignacin siempre debe realizarse a una variable de relacin
temporal.
Ejemplo: Escribir r s como
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 de relacin situada a la
izquierda de .
Esta variable puede utilizarse en expresiones posteriores.
3.44 Introduccin a los Sistemas de Bases de Datos
Consultas de ejemplo
Averiguar todos los clientes que tengan una cuenta al menos en
las sucursales Centro y Periferia.

3.45 Introduccin a los Sistemas de Bases de Datos
Averiguar todos los clientes que tengan una cuenta en todas las
sucursales localizadas en la ciudad de Barcelona.


Consultas de ejemplo
3.46 Introduccin a los Sistemas de Bases de Datos
Operaciones de lgebra relacional
extendida
Proyeccin generalizada
Reunin externa
Funciones de agregacin
3.47 Introduccin a los Sistemas de Bases de Datos
Proyeccin generalizada
Extiende la operacin de proyeccin al permitir que las
funciones aritmticas se utilicen en la lista de proyeccin.

[
F1, F2, , Fn
(E)
E es cualquier expresin de lgebra relacional
F
1
, F
2
, , F
n
son expresiones aritmticas que implican
constantes y atributos en el esquema de E.
Dada la relacin informacin-crdito(nombre-cliente, lmite,
saldo-crdito), averiguar cunto ms puede gastar cada
persona:
[
nombre-cliente, lmite saldo-crdito
(informacin-crdito)
3.48 Introduccin a los Sistemas de Bases de Datos
Funciones de agregacin y operaciones
La funcin de agregacin toma una coleccin de valores y
devuelve como resultado un valor simple.
avg: valor medio
min: valor mnimo
max: valor mximo
sum: suma de valores
count: nmero de valores
La operacin de agregacin en el lgebra relacional

G1, G2, , Gn
g
F1( A1), F2( A2),, Fn( An)
(E)
E es cualquier expresin de lgebra relacional
G
1
, G
2
, G
n
es una lista de atributos sobre los que se agrupa
(puede estar vaca)
Cada F
i
es una funcin agregada
Cada A
i
es un nombre de atributo
3.49 Introduccin a los Sistemas de Bases de Datos
Operacin de agregacin Ejemplo
Relacin r:
A B
o
o
|
|
o
|
|
|
C
7
7
3
10
g
sum(c)

(r)
sum-C
27
3.50 Introduccin a los Sistemas de Bases de Datos
Operacin de agregacin Ejemplo
Relacin cuenta agrupada por nombre-sucursal:
nombre-sucursal
g
sum(saldo)
(cuenta)
nombre-sucursal nmero-cuenta saldo
Navacerrada
Navacerrada
Barcelona
Barcelona
Reus
A-102
A-201
A-217
A-215
A-222
400
900
750
750
700
saldo
Navacerrada
Barcelona
Reus
1300
1500
700
nombre-sucursal
3.51 Introduccin a los Sistemas de Bases de Datos
Funciones de agregacin (Cont.)
El resultado de la agregacin no tiene nombre
Puede utilizarse la operacin renombrar para darle un nombre
Por conveniencia, permitimos renombrarlo como parte de la
operacin de agregacin


nombre-sucursal
g
sum(saldo) as suma-saldo
(cuenta)
3.52 Introduccin a los Sistemas de Bases de Datos
Reunin externa
Una extensin de la operacin de reunin que evita la prdida
de informacin.
Calcula la reunin y aade las tuplas de una relacin que no
coinciden con las de la otra relacin al resultado de la reunin.
Utiliza valores null:
null significa que el valor es desconocido o no existe
Todas las comparaciones que implican nulos son, generalmente
hablando, falsas por definicin.
Estudiaremos los significados concretos de las comparaciones
con nulos ms adelante
3.53 Introduccin a los Sistemas de Bases de Datos
Reunin externa Ejemplo
Relacin prstamo
nmero-prstamo importe
L-170
L-230
L-260
3000
4000
1700
Relacin prestatario
nombre-cliente
Gmez
Prez
Santos
L-170
L-230
L-155
nombre-sucursal
Centro
Reus
Navacerrada
nmero-prstamo
3.54 Introduccin a los Sistemas de Bases de Datos
Outer Join Example
Reunin interna

prstamo Prestatario
prstamo prestatario
Reunin externa por la izquierda
nmero-prstamo importe
L-170
L-230
3000
4000
nombre-cliente
Gmez
Prez
nombre-sucursal
Centro
Reus
nmero-prstamo importe
L-170
L-230
L-260
3000
4000
1700
nombre-cliente
Gmez
Prez
null
nombre-sucursal
Centro
Reus
Navacerrada
3.55 Introduccin a los Sistemas de Bases de Datos
Outer Join Example
Reunin externa por la derecha
prstamo prestatario
prstamo prestatario
Reunin externa completa
nmero-prstamo importe
L-170
L-230
L-155
3000
4000
null
nombre-cliente
Gmez
Prez
Santos
nombre-sucursal
Centro
Reus
null
nmero-prstamo importe
L-170
L-230
L-260
L-155
3000
4000
1700
null
nombre-cliente
Gmez
Prez
null
Santos
nombre-sucursal
Centro
Reus
Navacerrada
null
3.56 Introduccin a los Sistemas de Bases de Datos
Valores nulos
Es posible que las tuplas tengan valores nulos para algunos de sus
atributos, denotados como null
null significa valores desconocidos o no existentes.
El resultado de una expresin aritmtica que contenga un null es
null.
Las funciones de agregacin simplemente ignoran los valores nulos
Es una decisin arbitraria. Podran haber devuelto un valor nulo como
resultado.
Seguiremos la semntica de SQL para el tratamiento de los valores
nulos
Para eliminar duplicados y hacer grupos, los nulos se tratan como
cualquier otro valor. Se supone que los valores representados por
los nulos son los mismos
Alternativa: suponer que cada valor nulo es diferente
Ambas son decisiones arbitrarias por lo que seguiremos las reglas de
SQL
3.57 Introduccin a los Sistemas de Bases de Datos
Valores nulos
Las comparaciones con valores nulos devuelven el valor
especial cierto desconocido
Si se utiliz falso en lugar de desconocido, entonces no (A < 5)
no sera equivalente a A >= 5
Tres valores lgicos utilizando el valor cierto desconocido:
O: (desconocido o cierto) = cierto,
(desconocido o falso) = desconocido
(desconocido o desconocido) = desconocido
Y: (cierto y desconocido) = desconocido,
(falso y desconocido) = falso,
(desconocido y desconocido) = desconocido
NO: (no desconocido) = desconocido
En SQL P es desconocido se evala como cierto si el predicado
P se evala como desconocido
El resultado de la seleccin de predicado se trata como falso si
el predicado se evala como desconocido
3.58 Introduccin a los Sistemas de Bases de Datos
Modificacin de la base de datos
El contenido de la base de datos puede ser modificado
utilizando las siguientes operaciones:
Borrado
Insercin
Actualizacin
Todas estas operaciones se expresan utilizando la operacin de
asignacin.
3.59 Introduccin a los Sistemas de Bases de Datos
Borrado
Una peticin de borrado se expresa de forma similar a una
consulta, salvo que en lugar de mostrar las tuplas al usuario, el
borrado elimina las tuplas seleccionadas de la base de datos.
Solo se pueden borrar tuplas completas, no se pueden borrar
valores solo en determinados atributos
Un borrado se expresa en lgebra relacional como:
r r E
donde r es una relacin y E es una consulta de lgebra
relacional.
3.60 Introduccin a los Sistemas de Bases de Datos
Ejemplos de borrado
Borrar todos los registros de cuentas en la sucursal de
Navacerrada.


Borrar todos los registros de prstamos con cantidades entre 0 y 50



Borrar todas las cuentas en las sucursales situadas en Getafe.


3.61 Introduccin a los Sistemas de Bases de Datos
Insercin
Para insertar datos en una relacin, podemos:
Especificar una tupla para insertar
Escribir una consulta cuyo resultado sea un conjunto de tuplas para
insertar
En lgebra relacional, una insercin se expresa como:
r r E
donde r es una relacin y E es una expresin de lgebra
relacional.
La insercin de una tupla simple se expresa tomando E como
una relacin constante que contiene una tupla.
3.62 Introduccin a los Sistemas de Bases de Datos
Ejemplos de insercin
Insertar informacin en la base de datos especificando que
Prez tiene 1200 en la cuenta C-973 de la sucursal de
Navacerrada.



Ofrecer una cuenta de ahorro de 200 como regalo a todos los
clientes con prstamos en la sucursal de Navacerrada. Sea el
nmero de prstamo el utilizado como nmero de la nueva
cuenta de ahorro.

3.63 Introduccin a los Sistemas de Bases de Datos
Actualizacin
Un mecanismo para cambiar un valor en una tupla sin cambiar
todos los valores de la tupla
Utilizar la operacin de proyeccin generalizada para realizar
esta tarea
r [
F1, F2, , FI,
(r)
Cada F, es o el iesimo atributo de r, si el iesimo atributo no est
actualizado, o si el atributo tiene que ser actualizado
F
i
es una expresin que contiene solo constantes y los atributos
de r, que da el nuevo valor para el atributo
3.64 Introduccin a los Sistemas de Bases de Datos
Ejemplos de actualizacin
Realizar pagos de intereses aumentando todos los saldos un 5 por
ciento.




Pagar a todas las cuentas con saldos por encima de 10,000
un 6 por ciento de inters y un 5 por ciento a todas las dems
cuentas


3.65 Introduccin a los Sistemas de Bases de Datos
Vistas
En algunos casos, no es deseable para todos los usuarios ver el
modelo lgico completo (es decir, todas las relaciones actuales
almacenadas en la base de datos).
Considerar una persona que necesita conocer un nmero de
prstamo de cliente pero no tiene necesidad de conocer el
importe del prstamo. Esta persona debera ver la relacin
descrita en el lgebra relacional como
[
nombre-cliente, nmero-prstamo
(prestatario prstamo)
Cualquier relacin que no es del modelo conceptual pero se
hace visible para el usuario como una relacin virtual se
denomina una vista.
3.66 Introduccin a los Sistemas de Bases de Datos
Definicin de vista
Una vista se define utilizando la instruccin create view que
tiene la forma

create view v as <expresin de consulta

donde <expresin de consulta> es cualquier expresin de
consulta legal de lgebra relacional. El nombre de la vista se
representa por v.
Una vez definida la vista, su nombre puede utilizarse para
referirse a la relacin virtual que la vista genera.
La definicin de vista no es lo mismo que la creacin de una
nueva relacin mediante la evaluacin de la expresin de
consulta. Ms bien, una definicin de vista permite el ahorro de
una expresin para ser sustituida por consultas que utilizan esa
vista.
3.67 Introduccin a los Sistemas de Bases de Datos
View Examples
Considrese la vista (denominada todos-los-clientes)
consistente en las sucursales y sus clientes.




Podemos averiguar todos los clientes de la sucursal de
Navacerrada escribiendo:

3.68 Introduccin a los Sistemas de Bases de Datos
Actualizaciones mediante vistas
Las modificaciones de la base de datos expresadas como vistas deben
traducirse en modificaciones de las relaciones actuales de la base de
datos.
Considrese un empleado que necesita ver todos los datos de prstamos
en la relacin prstamo excepto el importe. La vista dada al empleado,
prstamo- sucursal, se define como:
create view prstamo-sucursal as
[
nombre-sucursal, nmero-prstamo
(prstamo)
Dado que se permite que el nombre de la vista aparezca all donde se
permite una relacin, el empleado puede escribir:

prstamo-sucursal prstamo-sucursal {(Navacerrada, P-37)}

3.69 Introduccin a los Sistemas de Bases de Datos
Actualizaciones mediante vistas (Cont.)
La insercin anterior debe representarse como una insercin en
la relacin actual prstamo desde la cual se ha generado la vista
prstamo-sucursal..
Una insercin en prstamo requiere un valor para importe. La
insercin puede tratarse de dos formas.
Rechazar la insercin y devolver un mensaje de error al usuario.
Insertar una tupla (P-37, Navacerrada, null) en la relacin
prstamo
Algunas actualizaciones mediante vistas no se pueden traducir
en actualizaciones de relaciones de la base de datos
create view v as o
nombre-sucursal = Navacerrada
(cuenta))
v v (P-99, Centro, 23)
Otras no pueden traducirse de forma nica
todos-los-clientes todos-los-clientes (Navacerrada, Juan)
Hay que elegir un prstamo o cuenta y
crear un nuevo nmero prstamo/cuenta!

3.70 Introduccin a los Sistemas de Bases de Datos
Vistas definidas utilizando otras vistas
Una vista puede utilizarse en la expresin que define a otra vista
Se dice que una relacin de vistas v
1
depende directamente de
una relacin de vistas v
2,
si v
2
se utiliza en la expresin que
define a v
1

Se dice que una relacin de vistas v
1
depende de la relacin de
vistas v
2
tanto si v
1
depende directamente de v
2
como si hay un
camino de dependencias de v
1
a v
2

Se dice que una relacin de vistas es recursiva si depende de s
misma
3.71 Introduccin a los Sistemas de Bases de Datos
Expansin de vistas
Una forma de definir el significado de las vistas definidas en
trminos de otras vistas.
Sea la vista v
1
definida por una expresin e
1
que puede contener
a su vez usos de relaciones de vistas.
La expansion de vistas de una expresin repite la siguiente
etapa de sustitucin:
repeat
Averiguar todas las relaciones de vistas v
i
en e
1

Sustituir la relacin de vistas v
i
por la expresin que define v
i

until no queden ms relaciones de vistas en e
1

Mientras las definiciones de vistas no sean recursivas, este
bucle concluir
3.72 Introduccin a los Sistemas de Bases de Datos
Clculo relacional de tuplas
Un lenguaje de consultas no procedimental, donde cada consulta
tiene la forma

{t | P (t) }
Es el conjunto de todas las tuplas t tales que el predicado P es
cierto para t
t es una variable tupla, t[A] denota el valor de la tupla t en el
atributo A
t e r denota que la tupla t est en la relacin r
P es una frmula similar a la del clculo de predicado
3.73 Introduccin a los Sistemas de Bases de Datos
Frmula de clculo del predicado
1. Conjunto de atributos y constantes
2. Conjunto de operadores de comparacin: (por ejemplo, <, s, =,
=, >, >)
3. Conjunto de conectadores: y (.), o (v) no ()
4. Implicacin (): x y, si x es cierto, y es cierto
x y x v y
5. Conjunto de cuantificadores:
- t e r (Q(t)) existe una tupla en t en la relacin r
tal que el predicado Q(t) es cierto
t e r (Q(t)) Q es cierto para todas las tuplas t en la relacin r
3.74 Introduccin a los Sistemas de Bases de Datos
Ejemplo de banco
sucursal (nombre-sucursal, ciudad-sucursal, activos)
cliente (nombre-cliente, calle-cliente, ciudad-cliente)
cuenta (nmero-cuenta, nombre-sucursal, saldo)
prstamo (nmero-prstamo, nombre-sucursal, importe)
impositor (nombre-cliente, nmero-cuenta)
prestatario (nombre-cliente, nmero prstamo)
3.75 Introduccin a los Sistemas de Bases de Datos
Consultas de ejemplo
Averiguar el nmero-prstamo, nombre-sucursal, e importe
para prstamos superiores a 1.200
{t | t e prstamo . t [importe] > 1200}

Averiguar los nmeros de prstamo de los prstamos de
importe superior a 1.200
{t | - s e prstamo (t[nmero-prstamo] = s[nmero-prstamo]
. s [importe] > 1200}


Tngase en cuenta que una relacin en el esquema [nombre-
cliente] est definida implcitamente por la consulta
3.76 Introduccin a los Sistemas de Bases de Datos
Consultas de ejemplo
Averiguar los nombres de todos los clientes que tengan en el
banco un prstamo, una cuenta, o ambos
{t | -s e prestatario(t[nombre-cliente] = s[nombre-cliente])
v -u e impositor(t[nombre-cliente] = u[nombre-cliente])

Averiguar los nombres de todos los clientes que tienen un
prstamo y una cuenta en el banco

{t | -s e prestatario(t[nombre-cliente] = s[nombre-cliente])
. -u e impositor(t[nombre-cliente] = u[nombre-cliente])
3.77 Introduccin a los Sistemas de Bases de Datos
Consultas de ejemplo
Averiguar los nombres de todos los clientes que tengan un
prstamo en la sucursal de Navacerrada
{t | -s e prestatario(t[nombre-cliente] = s[nombre-cliente]
. -u e prstamo(u[nombre-sucursal] = Navacerrada
. u[nmero-prstamo] = s[nmero-prstamo]))}

Averiguar los nombres de todos los clientes que tienen un
prstamo en la sucursal de Navacerrada, pero no tienen cuenta
en ninguna sucursal del banco
{t | -s e prestatario(t[nombre-cliente] = s[nombre-cliente]
. -u e prstamo(u[nombre-sucursal] = Navacerrada
. u[nmero-prstamo] = s[nmero-prstamo]))
. no -v e impositor (v[nombre-cliente] =
t[nombre-cliente]) }
3.78 Introduccin a los Sistemas de Bases de Datos
Consultas de ejemplo
Averiguar los nombres de todos los clientes que tengan un prstamo
en la sucursal de Navacerrada, y las ciudades donde viven

{t | -s e prstamo(s[nombre-sucursal] = Navacerrada
. -u e prestatario (u[nmero-prstamo] = s[nmero-prstamo]
. t [nombre-cliente] = u[nombre-cliente])
. - v e cliente (u[nombre-cliente] = v[nombre-cliente]
. t[ciudad-cliente] = v[ciudad-cliente])))}
3.79 Introduccin a los Sistemas de Bases de Datos
Consultas de ejemplo
Averiguar los nombres de todos los clientes que tengan cuenta
en todas las sucursales situadas en Barcelona:

{t | - c e cliente (t[nombre-cliente] = c[nombre-cliente]) .
s e sucursal(s[ciudad-sucursal] = Barcelona
- u e cuenta ( s[nombre-sucursal] = u[nombre-sucursal]
. - s e impositor ( t[nombre-cliente] = s[nombre-cliente]
. s[nmero-cuenta] = u[nmero-cuenta] )) )}

3.80 Introduccin a los Sistemas de Bases de Datos
Seguridad de las expresiones
Es posible escribir expresiones de clculo de tuplas que generen
relaciones infinitas.
Por ejemplo, {t | t e r} resulta en una relacin infinita si el
dominio de algn atributo de la relacin r es infinito
Para evitar este problema, se limita el conjunto de expresiones
permisibles a las expresiones seguras.
Una expresin {t | P(t)} en el clculo relacional de tuplas es
segura si cada componente de t aparece en una de las
relaciones, tuplas o constantes que aparecen en P
3.81 Introduccin a los Sistemas de Bases de Datos
Clculo relacional de dominios
Un lenguaje de consultas no procedimental equivalente en
potencia al clculo relacional de tuplas
Cada consulta es una expresin de la forma:

{ < x
1
, x
2
, , x
n
> | P(x
1
, x
2
, , x
n
)}

x
1
, x
2
, , x
n
representan variables de dominio
P representa una formula similar a la del clculo de predicados

3.82 Introduccin a los Sistemas de Bases de Datos
Seguridad de las expresiones
{ < x
1
, x
2
, , x
n
> | P(x
1
, x
2
, , x
n
)}

es segura si se cumplen todas las condiciones siguientes:
1.Todos los valores que aparecen en las tuplas de la expresin
son valores de dom(P) (es decir, los valores aparecen o en P o
en una tupla de una relacin citada en P).
2.Para cada subfrmula existe de la forma - x (P
1
(x)), la
subfrmula es verdadera si y solo si P
1
(x) es verdadera para
todos los valores x de dom(P
1
).
3. Para cada subfrmula para todo de la forma
x
(P
1
(x)), la
subfrmula es verdadera si y solo si P
1
(x) es verdadera para
todos los valores x de dom (P
1
).
Fin del Captulo 3
3.84 Introduccin a los Sistemas de Bases de Datos
Resultado de
o
nombre-sucursal = Navacerrada
(prstamo)
3.85 Introduccin a los Sistemas de Bases de Datos
Nmero e importe del prstamo
3.86 Introduccin a los Sistemas de Bases de Datos
Nombres de todos los clientes que
tienen un prstamo o una cuenta
3.87 Introduccin a los Sistemas de Bases de Datos
Clientes con cuenta pero sin prstamo
3.88 Introduccin a los Sistemas de Bases de Datos
Resultado de prestatario prstamo
3.89 Introduccin a los Sistemas de Bases de Datos
Resultado de o
nombre-sucursal = Navacerrada
(prestatario prstamo)
3.90 Introduccin a los Sistemas de Bases de Datos
Resultado de H
nombre-cliente
3.91 Introduccin a los Sistemas de Bases de Datos
Resultado de la subexpresin
3.92 Introduccin a los Sistemas de Bases de Datos
Mayor saldo de cuenta en el banco
3.93 Introduccin a los Sistemas de Bases de Datos
Clientes que viven en la misma calle y
misma ciudad que Prez
3.94 Introduccin a los Sistemas de Bases de Datos
Clientes con cuenta y prstamo en el banco
3.95 Introduccin a los Sistemas de Bases de Datos
Resultado de H
nombre-cliente, nmero-prstamo,
importe
(prestatario prstamo)
3.96 Introduccin a los Sistemas de Bases de Datos
Resultado de H
nombre-sucursal
(o
ciudad-cliente =
Huesca
(cliente cuenta impositor))
3.97 Introduccin a los Sistemas de Bases de Datos
Resultado de H
nombre-sucursal
(o
ciudad-sucursal =
Barcelona
(sucursal))
3.98 Introduccin a los Sistemas de Bases de Datos
Resultado de H
nombre-cliente, nombre-sucursal
(impositor cuenta)
3.99 Introduccin a los Sistemas de Bases de Datos
La relacin informacin-crdito
3.100 Introduccin a los Sistemas de Bases de Datos
Resultado de H
nombre-cliente, (lmite saldo-
crdito) as crdito-disponible
(informacin-
crdito).
3.101 Introduccin a los Sistemas de Bases de Datos
La relacin trabajo-por-horas
3.102 Introduccin a los Sistemas de Bases de Datos
La relacin trabajo-por-horas despus
de agrupar
3.103 Introduccin a los Sistemas de Bases de Datos
Resultado de
nombre-sucursal

sum(sueldo)
(trabajo-por-horas)
3.104 Introduccin a los Sistemas de Bases de Datos
Resultado de
nombre-sucursal

sum sueldo,
max(sueldo) as max-sueldo
(trabajo-por-horas)
3.105 Introduccin a los Sistemas de Bases de Datos
Las relaciones empleado y trabajo-por-
horas
3.106 Introduccin a los Sistemas de Bases de Datos
El resultado de
empleado trabajo-por-horas
3.107 Introduccin a los Sistemas de Bases de Datos
El resultado de
empleado trabajo-por-horas
3.108 Introduccin a los Sistemas de Bases de Datos
Resultado de
empleado trabajo-por-horas
3.109 Introduccin a los Sistemas de Bases de Datos
Resultado de
empleado trabajo-por-horas
3.110 Introduccin a los Sistemas de Bases de Datos
Tuplas insertadas en prstamo y
prestatario
3.111 Introduccin a los Sistemas de Bases de Datos
Nombres de todos los clientes que
tienen un prstamo en la sucursal de
Navacerrada
3.112 Introduccin a los Sistemas de Bases de Datos
Diagrama E-R
3.113 Introduccin a los Sistemas de Bases de Datos
La relacin sucursal
3.114 Introduccin a los Sistemas de Bases de Datos
La relacin prstamo
3.115 Introduccin a los Sistemas de Bases de Datos
La relacin prestatario

Anda mungkin juga menyukai