Download La operación Renombramiento - Departamento de Ingeniería de

Document related concepts

Normalización de bases de datos wikipedia , lookup

Cálculo relacional basado en tuplas wikipedia , lookup

Transcript
OPERACIONES FUNDAMENTALES
DEL ÁLGEBRA RELACIONAL
Bases de Datos
Ingeniería de Sistemas y Computación
Universidad Nacional de Colombia
2007
Álgebra Relacional
Álgebra Relacional
El álgebra relacional es un lenguaje formal con una serie
de operadores que trabajan sobre una o varias relaciones
para obtener otra relación resultado, sin que cambien las
relaciones originales.
Tanto los operandos como los resultados son relaciones,
por lo que la salida de una operación puede ser la entrada
de otra operación. Esto permite anidar expresiones del
álgebra, del mismo modo que se pueden anidar las
expresiones aritméticas.
Bases de Datos - 2007
Álgebra Relacional
Operaciones Fundamentales
Codd, propuso 8 operadores, de los cuáles 5 son
fundamentales:
Selección
Proyección
Producto cartesiano
Unión
Diferencia
Los operadores no fundamentales:
Concatenación (join)
Intersección
División
Bases de Datos - 2007
Álgebra Relacional
Operaciones Fundamentales
Las operaciones fundamentales se subdividen en :
Unarias: Operan sobre una sola relación
Binarias: Operan sobre pares de relaciones
Bases de Datos - 2007
Operaciones Unarias
Operaciones Fundamentales - Unarias
Las operaciones Unarias son:
Selección
Proyección
Renombramiento
Bases de Datos - 2007
Operaciones Unarias
Ejemplo: Entidad Bancaria
Cliente
Cliente_Cuenta
Nombre_
cliente
Direccion_
cliente
Ciudad_
cliente
Fernando
Santos
Calle 13 No.
23-34
Bogota
Maria
Plazas
Calle 123 No.
67-45
Cali
Nicolas
Romero
Kra 45 No.
34-78
Bogota
Cliente_Prestamo
Nombre_
cliente
Numero_
Prestamo
Fernando
santos
Prestamo
Nombre_
cliente
Numero
_Cuenta
Numero_
prestamo
Nombre_
sucursal
Valor
Fernando
santos
123
11
Galerias
15000000
Maria
Plazas
55
12
Centro
1000000
13
Salitre
50000000
Nicolas
Romero
68
Sucursal
Cuenta
Nombre_
Sucursal
Ciudad_
sucursal
Activos
11
Galerias
Bogota
256000000
Maria
Plazas
12
Centro
Cali
450000000
Nicolas
Romero
13
Salitre
Medellin
600000000
Numero_
cuenta
Nombre_
sucursal
Saldo
101
Galerias
256000000
102
Centro
450000000
103
Salitre
600000000
Bases de Datos - 2007
Operaciones Unarias
Operación Selección o Restricción
Selecciona tuplas que satisfacen un predicado
dado.
Corresponde a:
“R WHERE condición”
Se utiliza la letra griega sigma minúscula (σ) para
denotar la selección. El predicado aparece como
subíndice de σ. La relación del argumento se da
entre paréntesis a continuación de σ.
Ejemplo: Seleccionar las tuplas de la relación
préstamo en la sucursal «Galerías»
σnombre-sucursal = «Galerías» (préstamo)
Bases de Datos - 2007
Operaciones Unarias
Operación Selección
Ejemplo: Hacer un listado de todos los empleados con
un salario anual superior a $20’000.000
σsalario>20’000.000 (empleado)
Select… from Empleado WHERE salario>20’000.000
En general, se permiten las comparaciones que utilizan
=, ≠, <, ≤, > o ≥ en el predicado de selección.
Ejercicio: σvalor >10’000.000 (préstamo)
Bases de Datos - 2007
Operaciones Unarias
Operación Selección
Además, se pueden combinar varios predicados
en uno mayor utilizando las conectivas y (⋀) y o (⋁).
Ejemplo: Encontrar las tuplas correspondiente a
préstamos de más de $10’000.000 concedidos por la
sucursal de Galerías
Select… from préstamo WHERE nombre-sucursal=`Galerías' AND
valor>10.000.000
σnombre-sucursal = «Galerías» ⋀ valor>10’0000.000 (préstamo)
Bases de Datos - 2007
Operaciones Unarias
Operación Proyección
Devuelve su relación de argumentos, excluyendo
algunos argumentos. Dado que las relaciones son
conjuntos, se eliminan todas las filas duplicadas.
La proyección se denota por la letra griega mayúscula
pi (Π). Se crea una lista de los atributos que se desea
que aparezcan en el resultado como subíndice de Π.
La relación de argumentos se escribe a continuación
entre paréntesis.
Bases de Datos - 2007
Operaciones Unarias
Operación Proyección
Supóngase que se desea hacer una lista de todos los
números de préstamo y del valor de los mismos, pero sin
que aparezcan los nombres de las sucursales. La
operación proyección permite producir esta relación.
Ejemplo: La consulta para crear una lista de todos los
números de préstamo y del valor de los mismos:
Πnúmero-préstamo, valor (préstamo)
Bases de Datos - 2007
Operaciones Unarias
Composición de operaciones relacionales
Es importante el hecho de que el resultado de una
operación relacional sea también una relación.
Ejemplo: Realizar una consulta más compleja:
«Encontrar los clientes que viven en Bogotá»
Πnombre-cliente ( σciudad-cliente = «Bogotá» (cliente))
La composición de operaciones del álgebra relacional para formar
expresiones del álgebra relacional es igual que la composición de
operaciones aritméticas (como +, -, * y ÷) para formar expresiones
aritméticas.
Bases de Datos - 2007
Operaciones Unarias
La operación Renombramiento
A diferencia de las relaciones de la base de datos, los
resultados de las expresiones de álgebra relacional no
tienen un nombre que se pueda utilizar para referirse a ellas.
Resulta útil poder ponerles nombre; el operador
renombramiento, denotado por la letra griega rho minúscula
(ρ), permite realizar esta tarea.
Dada una expresión E del álgebra relacional, la expresión
ρx(E) devuelve el resultado de la expresión E con el nombre
x.
Bases de Datos - 2007
La operación Renombramiento
Ejemplo:«Averiguar los nombres de todos los
clientes que viven en la misma calle y en la
misma ciudad que Romero». Se puede
obtener la calle y la ciudad en la que vive
Romero escribiendo
Πcalle-cliente, ciudad-cliente (σnombre-cliente = «Romero» (cliente))
Bases de Datos - 2007
La operación Renombramiento
En la consulta siguiente se utiliza la operación
renombramiento sobre la expresión anterior para darle
al resultado el nombre dirección-Romero y para
cambiar el nombre de los atributos a calle y ciudad en
lugar de calle-cliente y ciudad-cliente:
Πcliente.nombre-cliente (σcliente.calle-cliente = dirección-Romero ⋀
cliente.ciudad-cliente = dirección-Romero.ciudad (cliente × ρdirecciónRomero (calle, ciudad) (Πcalle-cliente, ciudad-cliente (σnombrecliente = «Romero» (cliente)))))
Bases de Datos - 2007
Operaciones Binarias
Operaciones Fundamentales - Binarias
Las operaciones Binarias son:
Unión
Diferencia de conjuntos
Producto cartesiano
Intersección
Reunión natural
División
Asignación
Bases de Datos - 2007
Operaciones Binarias
Operación Unión
Realizar una consulta para averiguar el nombre de todos
los clientes del banco que tienen una cuenta, un
préstamo o ambas cosas.
Para contestar a esta consulta hace falta la información de la
relación impositor y la de la relación prestatario:
Seleccionar los nombres de todos los clientes con préstamos en
el banco:
Πnombre-cliente (cliente_prestamo)
Seleccionar el nombre de los clientes con cuenta en el banco:
Πnombre-cliente (cliente_cuenta)
Bases de Datos - 2007
Operaciones Binarias
Operación Unión
Para contestar a la consulta hace falta la unión de estos
dos conjuntos; es decir, hacen falta todos los nombres de
clientes que aparecen en alguna de las dos relaciones o en
ambas.
Estos datos se pueden averiguar mediante la operación
binaria unión, denotada, como en la teoría de conjuntos,
por U. Por tanto, la expresión buscada es:
Πnombre-cliente (cliente_prestamo) U Πnombre-cliente (cliente_cuenta)
Bases de Datos - 2007
Operaciones Binarias
Operación Unión
Por tanto, para que una operación unión r U s sea válida
hay que exigir que se cumplan dos condiciones:
Las relaciones r y s deben ser de la misma aridad. Es decir,
deben tener el mismo número de atributos.
Los dominios de los atributos i-ésimos de r y de s deben ser
iguales para todo i.
Bases de Datos - 2007
Operaciones Binarias
La operación diferencia de conjuntos
La operación diferencia de conjuntos, denotada por –,
permite buscar las tuplas que estén en una relación pero no
en la otra. La expresión r – s da como resultado una relación
que contiene las tuplas que están en r pero no en s.
Ejemplo: Seleccionar todos los clientes del banco que tienen
abierta una cuenta pero no tienen concedido ningún
préstamo:
Πnombre-cliente(cliente_cuenta) – Πnombre-cliente
(cliente_prestamo)
Bases de Datos - 2007
Operaciones Binarias
La operación diferencia de conjuntos
Como en el caso de la operación unión, hay que
asegurarse de que las diferencias de conjuntos se realicen
entre relaciones compatibles.
Por tanto, para que una operación diferencia de conjuntos
r – s sea válida hay que exigir que las relaciones r y s
sean de la misma aridad y que los dominios de los
atributos i-ésimos de r y s sean iguales.
Bases de Datos - 2007
Operaciones Binarias
La operación producto cartesiano
La operación producto cartesiano, denotada por (×), permite
combinar información de cualesquiera dos relaciones. El
producto cartesiano de las relaciones r1 y r2 como r1 × r2.
El producto cartesiano “multiplica" dos relaciones, definiendo
una nueva relación que tiene todos los pares posibles de
tuplas de las dos relaciones. Si la relación r1 tiene P tuplas
y N atributos y la relación r2 tiene Q tuplas y M atributos, la
relación resultado tendrá PxQ tuplas y M+N atributos.
Bases de Datos - 2007
Operaciones Binarias
La operación producto cartesiano
Ejemplo: Seleccionar los nombres de todos los clientes que
tienen un préstamo en la sucursal de Galerías.
Se necesita información de las relaciones préstamo y
cliente_prestamo:
σnombre-sucursal = «Galerías» (cliente_prestamo × préstamo)
Se tiene una relación que sólo atañe a la sucursal de
Galerías. Sin embargo, la columna nombre-cliente puede
contener clientes que no tengan concedido ningún préstamo
en esta sucursal, debido a que el producto cartesiano toma
todas las parejas posibles de una tupla de cliente_préstamo
con una tupla de préstamo.)
Bases de Datos - 2007
Operaciones Binarias
La operación producto cartesiano
Dado que la operación producto cartesiano asocia todas las
tuplas de préstamo con todas las tuplas de
clientes_prestamo, se sabe que, si un cliente tiene
concedido un préstamo en la sucursal de Galerías, hay
alguna tupla de cliente_prestamo × préstamo que contiene
su nombre y que cliente_prestamo.número-préstamo =
préstamo.número-préstamo. Por tanto:
σcliente_prestamo.número-préstamo =
préstamo.número-préstamo (σnombre-sucursal =
«Galerías» (cliente_prestamo × préstamo))
Bases de Datos - 2007
Operaciones Binarias
La operación producto cartesiano
sólo se obtienen las tuplas de cliente_prestamo × préstamo
que corresponden a los clientes que tienen concedido un
préstamo en la sucursal de Galerías.
Finalmente, dado que sólo se desea obtener nombrecliente, se realiza la proyección:
Πnombre-cliente ( σcliente_prestamo.númeropréstamo = préstamo.número-préstamo (σnombresucursal = «Galerias» (cliente_prestamo × préstamo)))
Bases de Datos - 2007
Otras Operaciones
Otras Operaciones del Algebra Relacional
Intersección de conjuntos (∩)
Todos los clientes que tengan un préstamo concedido y
una cuenta abierta:
Πnombre-cliente (cliente_prestamo) ∩ Πnombre-cliente
(cliente_cuenta)
Reunión natural (X )
Todos los clientes que tengan un préstamo concedido y
una cuenta abierta:
Πnombre-cliente (cliente_prestamo X cliente_cuenta)
Bases de Datos - 2007
Otras Operaciones
Otras Operaciones del Algebra Relacional
División(%)
Resulta adecuada para las consultas que incluyan la
expresión “para todos”.
Todos los clientes que tengan una cuenta abierta en todas
las sucursales de Bogotá:
R1=Obtener todas las sucursales de Bogotá
R2=Todos los pares (nombre_cliente, nombre_sucursal)
para los clientes que tienen una cuenta en una sucursal
R1=Πnombre-sucursal (σciudad-sucursal = «Bogotá» (Sucursal)) %
R2=Πnombre-cliente,nombre-sucursal (cliente_cuenta X cuenta)
Bases de Datos - 2007
Otras Operaciones
Otras Operaciones del Algebra Relacional
Operación asignación ( Å)
Actúa de la misma manera que en los lenguajes de
programación.
Temp1Å ΠR-S (r)
Bases de Datos - 2007
Otras Operaciones
Tarea
Escribir o traducir las siguientes consultas en el algebra
relacional:
1. Seleccionar las tuplas de la relación préstamo en
que la sucursal es «Centro»
2.
Encontrar los clientes que viven en Cali.
3. Seleccionar los nombres de todos los clientes que
tienen concedido un préstamo en la sucursal del
Centro.
4. Πnombre-cliente,numero_prestamo,valor
(cliente_prestamo X prestamo)
5. Πnúmero-cuenta, saldo(cuenta)
Bases de Datos - 2007
Preguntas
Gracias por su Atención
Bases de Datos - 2007