Você está na página 1de 43

21/06/2018

Algebra relacional I
Prof. Elizabeth Murakami

Lenguajes de manejo de
datos
• DML es una notación para expresar
–consultas,
–actualización,
–inserción y
–borrado.
• Un lenguaje de consulta es un lenguaje
en el que un usuario solicita información de
la BD.

1
21/06/2018

Los Lenguajes se clasifican


en:
•Algebraicos: aplican operadores sobre
relaciones (ISBL)
•De cálculo: especifican un predicado que las
tuplas deben
satisfacer
– relacional de tuplas (QUEL)
– relacional de dominios (QBE)
• Intermedios: SQUARE y SEQUEL (SQL)

Lenguajes de manejo de datos


Pueden clasificarse en:
• Procedimentales
– El usuario da instrucciones al sistema para que
realice una secuencia de operaciones en la BD para
calcular el resultado.
– Álgebra relacional
• no procedimentales
– el usuario describe la información deseada sin dar
un procedimiento específico para obtener esa
información.
– Cálculo relacional

2
21/06/2018

Álgebra relacional

• Es un lenguaje de consulta procedimental.


• Consta de un conjunto de operaciones que
toman una o dos relaciones como entrada y
producen una nueva relación como resultado.
• Las operaciones fundamentales del AR son
suficientes para expresar cualquier consulta.

Álgebra relacional
Las operaciones fundamentales son:
• Selección
• Proyección
• Producto cartesiano (de relaciones)
• Unión
• Diferencia ó resta
• Renombrar
• Si nos restringimos sólo a estas operaciones
algunas consultas son largas de expresar ⇒ se
definen operaciones adicionales.

3
21/06/2018

AR: Operaciones fundamentales

Las operaciones seleccionar, proyectar


y renombrar se llaman operaciones unarias,
ya que operan sobre una relación.

Las otras tres operaciones:


unión, resta y producto cartesiano,
operan sobre pares de relaciones y,
por tanto, se llaman operaciones binarias.

AR: Operaciones fundamentales

Sean r y s las siguientes relaciones:

4
21/06/2018

AR: Operaciones fundamentales

AR: Operaciones fundamentales

5
21/06/2018

AR: Operaciones fundamentales

AR: Operaciones fundamentales

6
21/06/2018

AR: Operaciones fundamentales

AR: Operación selección


FILAS

Selecciona tuplas que satisfacen un predicado dado.

• Se usa la letra griega minúscula sigma (s) para indicar


la selección.
• El predicado F aparece como subíndice de s.
• La relación argumento (r) se escribe a continuación de
entre paréntesis.

7
21/06/2018

AR: Operación selección


(ejemplos)

Seleccionar las tuplas de la relación préstamo


en las que la sucursal es Perryridge

s nombre-sucursal = "Perryridge" (préstamo)

AR: Operación selección


(ejemplos)
La relación Préstamo es:

8
21/06/2018

AR: Operación selección


(ejemplos)

AR: Operación selección


(ejemplos)

Encontrar todas las tuplas en las que la cantidad


prestada es más de 1200 dólares

cantidad > 1200 (préstamo)

En general, se permiten las comparaciones usando

=

en el predicado de selección.

9
21/06/2018

AR: Operación selección


(ejemplos)
Encontrar las tuplas en préstamo de más de
1200 dólares hechas por la sucursal Perryridge

Se pueden combinar varios predicados usando


los conectores


AR: Operación selección


(ejemplos)
Supongamos que se tiene el esquema de relación
que indica que un cliente tiene un “banquero
personal”
servicio (nombre-cliente, nombre-banquero)

Encontrar los clientes que tienen el mismo


nombre que su banquero personal

10
21/06/2018

AR: Operación selección


(ejemplos)

El predicado de selección puede incluir


comparaciones entre dos atributos.

11
21/06/2018

Propiedades Selección

AR: Operación selección


(otros ejemplos)

σ apellido=‘ (EMPLEADO)
GONZALEZ’

σ salario>3000 (EMPLEADO)
σ ‘ ^
apellido= GONZALEZ’ (EMPLEADO)
salario>3000

σ not (APELLIDO=GONZALEZ (EMPLEADO)


^ Salario>3000)

12
21/06/2018

columnas

AR: Operación proyección

Es una operación unaria que devuelve su


relación argumento con ciertas columnas
omitidas.

Se listan los atributos que se desea que aparezcan


en el resultado como subíndices de p.

• Dado que el resultado es una relación, se


eliminan todas las filas duplicadas.

AR: Operación proyección


Ejemplos

Obtener una relación que muestre los


clientes y las sucursales en las que
tienen préstamos, pero no la cantidad del
préstamo, ni el número del préstamo.

p( nombre-sucursal, nombre-cliente) (préstamo)

13
21/06/2018

AR: Operación proyección


Ejemplos

AR: Operación proyección


Ejemplos
Encontrar a los clientes que tienen el mismo
nombre que su banquero personal.

Como vimos, esta consulta produce el siguiente


resultado:

Es redundante listar dos veces el nombre de la


persona.

14
21/06/2018

AR: Operación proyección


Ejemplos
Sería preferible una relación de un atributo sobre
(nombrecliente) que liste todos aquellos que tengan
el mismo nombre que su banquero personal.

• La operación proyectar nos permite producir esta


relación.

pnombre-cliente (snombre-cliente=nombre-
banquero(servicio))

• El argumento de la proyección puede ser el


resultado de otra operación.

AR: Operación proyección


Ejemplos

15
21/06/2018

Propiedades Proyección

Propiedades Proyección

16
21/06/2018

Otros Ejemplos:

1) p nombre, dirección (FABS)


2) p desc (PRODS)

3) p #f (VENTAS)

AR: Operación renombre


• Asigna un nuevo nombre x a una relación r

x (r)

Para eliminar ambigüedades se nombraron atributos


mediante

nombre-relación.nombre-atributo

Otra forma de ambigüedad surge cuando la misma


relación aparece más de una vez en una pregunta.

17
21/06/2018

DeptoEdificioPrincipal(pDepartamento(nombre)(sEdificio=Principal(Departamento
)))

AR: Operación renombre - Ejemplo

• Encontrar los clientes que viven en la misma


calle y en la misma ciudad que Smith.

Se puede obtener la calle y la ciudad de Smith


escribiendo

18
21/06/2018

AR: Operación renombre - Ejemplo

AR: Operación renombre - Ejemplo


Para especificar a qué valor de calle nos referimos,
no podemos usar
cliente.calle = cliente.calle,

ya que ambos valores de calle se toman de la


misma relación cliente.

Una dificultad parecida existe para cliente.ciudad.

Este problema se resuelve usando la operación


para cambiar el nombre una vez a cliente y así
poder hacer referencia a la relación dos veces sin
ambigüedad.

19
21/06/2018

AR: Operación renombre - Ejemplo

Renombre: Ejemplo 1

20
21/06/2018

Renombre: Ejemplo 2

Ejercicio 1

21
21/06/2018

AR: Operación unión


• Es una operación binaria cuyo resultado es una
relación
– cuyo esquema es idéntico al de r ó s y
– cuyo cuerpo está formado por todas las tuplas
t pertenecientes a r ó a s ó a las dos.
rs
• Para que sea válida se exige que se cumplan dos
condiciones:
– r y s deben tener el mismo número de
atributos.
– Dominios del i-ésimo atributo de r y s deben
ser iguales

AR: Operación unión - Ejemplo

Encontrar a todos los clientes de la sucursal


Perryridge.

Es decir, encontrar a las personas que tienen


un préstamo, una cuenta, o ambos.

Se necesita información de
–Préstamo
–Depósito

22
21/06/2018

AR: Operación unión - Ejemplo

AR: Operación unión - Ejemplo

23
21/06/2018

Ejemplo 2

AR: Operación Intersección

R∩S
Relación que incluye todas las tuplas que están a la vez en
RyS

24
21/06/2018

AR: Operación resta


Permite encontrar tuplas que estén en una
relación pero no en otra.
r–s
• La relación resultante contiene aquellas tuplas que
están en r pero no en s.
• Para que sea válida se exige que se cumplan dos
condiciones:
– r y s deben tener el mismo número de
atributos.
– Los dominios del i-ésimo atributo de r y de s
deben ser los mismos.

AR: Operación resta

25
21/06/2018

AR: Operación resta - Ejemplo


Encontrar los clientes de la sucursal Perryridge
que tienen una cuenta allí, pero no un préstamo

Propiedades Unión, Intersección


y Resta

26
21/06/2018

Ejercicio 2

AR: Operación producto


cartesiano

• Es una operación binaria que permite


combinar relaciones.

rxs

27
21/06/2018

28
21/06/2018

29
21/06/2018

AR: Operación producto


cartesiano
Queremos encontrar a todos los clientes del
banquero Johnson, y las ciudades en las que
viven estos clientes.
• Se necesita información de la relación
servicio y de la relación cliente.

u = servicio x cliente

30
21/06/2018

AR: Operación producto


cartesiano

El resultado de
servicio x
cliente
es:

AR: Operación producto cartesiano


u(servicio.nombre-cliente,servicio.nombre-
banquero,cliente.nombre-cliente,cliente.calle,
cliente.ciudad-cliente)

• Se listan todos los atributos de las dos relaciones,


con el nombre de la relación de la que cada atributo
procede.

• Se necesita el nombre de la relación para evitar


ambigüedad:

servicio.nombre-cliente  cliente.nombre-cliente

• Para aquellos atributos que sólo aparecen en uno


de los dos esquemas, no es necesario el prefijo.

31
21/06/2018

AR: Operación producto cartesiano

¿Qué tuplas aparecen en r x s ?

• Se construye una tupla por cada par posible de


Tuplas

– Para el ejemplo una de la relación servicio y otra de la


relación cliente.

• Si se tienen n1 tuplas en servicio y n2 en


cliente. Entonces existen n1n2 formas de elegir
un par de tuplas; de forma que hay n1n2 tuplas
en r.

AR: Operación producto cartesiano

Grado de una relación es la cantidad de


atributos.

• Si gr(r)=n y gr(s)=m gr(r x s)=n+m

En general, dadas dos relaciones r(R) y s(S)


rxs
es una relación cuyo esquema es la
concatenación de R y S

32
21/06/2018

AR: Operación producto cartesiano


Continuamos con el ejemplo:

• Encontrar a todos los clientes del banquero Johnson y la


ciudad en la que viven.

Lo resolvemos por etapas:

nombre-banquero = "Johnson" (servicio x


cliente)

• El producto cartesiano toma todos los pares posibles de


una tupla de servicio con una tupla de cliente.
• cliente.nombre-cliente puede contener clientes de
banqueros que no sean Johnson.
• servicio.nombre-cliente contiene sólo clientes de
Johnson.

AR: Operación producto cartesiano

33
21/06/2018

AR: Operación producto cartesiano

Para obtener la ciudad del cliente, interesarán


las tuplas en las que:

servicio.nombre-cliente = cliente.nombre-cliente

Así si se escribe

servicio.nombre-cliente=cliente.nombre-cliente

( nombre-banquero="Johnson"(servicio x cliente))

AR: Operación producto cartesiano

Finalmente, como sólo se desea nombre-cliente y


ciudad-cliente, se hace una proyección:

34
21/06/2018

Propiedades Producto
cartesiano

select c.*,p.*
from comidas as c
cross join postres as p;

AR: Operación Join


Permite combinar pares de tuplas relacionadas entre dos
relaciones
Se denota R S

35
21/06/2018

Propiedades Join
PRODUCTO CARTESIANO vs JOIN
En el PRODUCTO CARTESIANO aparecen todas las
combinaciones de tuplas
En JOIN aparecen sólo combinaciones de tuplas que satisfacen
condición.
condición 1: En general, formato de condición de JOIN
entre R y S:
<condición>AND<condición> AND...AND <condición>
condición 2: Forma de <condición> es Ai θBj , siendo
Ai atributo de R y Bj atributo de S
condición 3. dom(Ai ) = dom(Bj )
Condición 4. θ ∈ {=, ,≤,, ≥, ≠}
NULL. Tuplas cuyos atributos de JOIN son NULL o cuya
condición es falsa no aparecen en el resultado

AR: Operación EquiJoin

utilizar

36
21/06/2018

AR: Operación Natural Join

AR: Operación Natural Join

37
21/06/2018

AR: OUTER JOIN


INNER JOIN: JOIN donde tuplas que no cumplen condición
de JOIN son eliminadas del resultado (Ej. NULL en
atributo de JOIN)

OUTER JOIN: JOIN en el cual se incorpora adicionalmente


al resultado las tuplas de R, S, o ambas relaciones, que
no cumplen la condición de JOIN

LEFT OUTER JOIN. R S. Conserva todas las tuplas de


R. Si no se encuentra ninguna tupla de S que cumpla con
condición de JOIN, entonces los atributos de S en el
resultado se completan en NULL

AR: OUTER JOIN . Ejemplo

38
21/06/2018

AR: OUTER JOIN


RIGHT OUTER JOIN. R S. Conserva todas las tuplas de S. Si no
se encuentra ninguna tupla de R que cumpla con condición de
JOIN, entonces los atributos de R en el resultado se completan
en NULL FULL

OUTER JOIN. R S. Conserva todas las tuplas de R y S. Si no se


encuentra ninguna tupla de R o S que cumpla con condición de
JOIN, entonces sus atributos en el resultado se completan en
NULL SQL.

Las tres operaciones de OUTER JOIN son parte del estándar SQL2

Ejercicio 3

39
21/06/2018

AR: División

Retorna los valores de R que se encuentran emparejados


con TODOS los valores de S

R ÷ S. Requiere que atributos de S ⊂ atributos de R.

El resultado contiene atributos de R menos atributos de S

AR: División. Ejemplo

40
21/06/2018

Eliminar duplicados (δ)


Elimina las tuplas duplicadas de una relación (𝛿 )

𝛿 (𝜋𝐸𝑑𝑖𝑓𝑖𝑐𝑖𝑜 (𝐷𝑒𝑝𝑎𝑟𝑡𝑎𝑚𝑒𝑛𝑡𝑜) = {𝑃𝑟𝑖𝑛𝑐𝑖𝑝𝑎𝑙 , 𝑃𝑙𝑎𝑛𝑡𝑎 , 𝐴𝑛𝑒𝑥𝑜}

41
21/06/2018

Eliminar los valores duplicados en el campo Año de la tabla Película

𝛿(𝜋Año(Película) = { 1997, 2001, 2004 }

Teniendo las siguientes tablas,


resolver las preguntas

42
21/06/2018

1. Obtener todos los detalles de todos los artículos de CACERES.


2. Obtener todos los valores de P# para los proveedores que
abastecen el artículo T1.
3. Obtener la lista de pares de atributos (COLOR, CIUDAD) de la
tabla componentes eliminando los pares duplicados.
4. Obtener de la tabla de artículos los valores de T# y CIUDAD
donde el nombre de la ciudad de Sevilla
5. Obtener los valores de P# para los proveedores que suministran
para el artículo T1 el componente C1.
6. Obtener aquellos envíos que tengan cantidades mayores de 300
y sean del componente C3.
7. Obtener mediante el comando RENOMBRAR todos los
proveedores de productos categoría 30

43

Você também pode gostar