Sistemas de Datos - Algebra relacional

Anuncio
Sistemas de Datos
SQL Básico – Algebra Relacional
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Conceptos
•Relación
•Esquema
•Operaciones Fundamentales del Algebra Relacional
•Selección
•Proyección
Unarias
•Renombramiento
•Unión
•Diferencia
•Producto Cartesiano
•Otras Operaciones
•Intersección
•Reunión Natural
Binarias
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Conceptos
•Operaciones del álgebra relacional
extendida
•Agregación (Count, Sum, Avg, Etc)
•Reunión externa
•Reunión externa completa
•Reunión externa por la derecha
•Reunión externa por la izquierda
•Modelo de Ejemplo
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Algebra Relacional – Selección
Selección (σ)
Permite seleccionar un subconjunto de
tuplas de una relación (R), todas
aquellas que cumplan la(s)
condición(es) P:
σP(R)
Por Ej:
σApellido=Gomez(Alumno)
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Algebra Relacional – Proyección
Proyección (Π)
Permite extraer columnas (atributos) de una
relación, dando como resultado un
subconjunto vertical de atributos de la
relación
ΠA , A
1
(R)
2,…, An
Por Ej:
ΠApellido, Nombre, Numero_Registro(Alumno)
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Algebra Relacional – Renombramiento
Renombramiento (p)
Permite poner nombre a las expresiones
del algebra relacional
pA , A
1
2,…,
An
(R)
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Algebra Relacional – Unión
Unión (U)
Retorna el conjunto de tuplas que estan
en R, o en S, o en ambas. R y S deben
ser relaciones compatibles:
RUS
Por Ej:
Alumno U Profesor
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Algebra Relacional – Diferencia
Diferencia (-)
Entrega todas aquellas tuplas que estan
en R, pero no en S. R y S deben ser
relaciones compatibles:
R-S
Por Ej:
Alumno - Profesor
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Algebra Relacional – Producto Cartesiano
Producto cartesiano (x)
Entrega una relación, cuyo esquema
corresponde a una combinación de todas las
tuplas de R con cada una de las tuplas de S,
y sus atributos corresponden a los de R
seguidos por los de S:
RxS
Por Ej:
Alumno x Profesor
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Algebra Relacional – Intersección
Intersección (∩)
La intersección, como en Teoría de conjuntos,
corresponde al conjunto de todas las tuplas
que estan en R y en S, siendo R y S
relaciones compatibles:
R∩S
Por Ej:
Alumno ∩ Profesor
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Algebra Relacional – Reunión Natural
Reunión Natural (⋈):
Hace un producto cartesiano de sus dos argumentos y
realiza una selección forzando la igualdad de
atributos que aparecen en ambas relaciones,
eliminando repetidos:
R⋈S
Por Ej:
Alumno ⋈ (Alumno.DNI=Profesor.DNI)
Profesor
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Modelo de Ejemplo - Casas
Trabajamos con tres relaciones:
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Modelo de Ejemplo - Selección
Listar la calle y el número
de las casas.
En algebra relacional,
hacemos la proyección
de Calle y Numero
de la relación Casa
En SQL, escribimos:
SELECT Calle, Numero
FROM Casa
La tabla luego del FROM
representa la relación
sobre la que hacemos
la proyección
La lista que sigue al SELECT
nos marca los atributos
que proyectamos
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Modelo de Ejemplo - Selección
Listar todas las casas
de la calle Moreno
En algebra relacional,
hacemos la selección
en la relación Casa
donde Calle=“Moreno”
En SQL, escribimos:
SELECT *
FROM Casa
WHERE Calle=‘Moreno’
Π Calle, Numero, Valor (Casa)
La tabla luego del FROM
representa la relación
sobre la que hacemos
la proyección
La condición que sigue al
WHERE representa
el predicado de la selección
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Modelo de Ejemplo - Selección
Listar los números de las
casas de la calle Moreno
En algebra relacional,
hacemos la selección
en la relación Casa
donde Calle=“Moreno”
y la proyección del
atributo Numero
En SQL, escribimos:
SELECT Numero
FROM Casa
WHERE Calle=‘Moreno’
σ Calle=“Moreno” (Casa)
La tabla luego del FROM
representa la relación
sobre la que hacemos
la selección y la proyección
La condición que sigue al
WHERE representa
el predicado de la selección,
y la lista luego del SELECT
los atributos a proyectar
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Modelo de Ejemplo - Inserción
Agregar una casa en Moreno
al 325, por valor de 25000
En algebra relacional,
agregamos una tupla
a la relación Casa
En SQL:
INSERT INTO Casa
(Calle, Numero, Valor)
VALUES
(‘Moreno’, 325, 25000)
La tabla luego del INTO
indica la relación a la
cual le agregamos la tupla
La lista luego del VALUES
contiene los datos de la
tupla a agregar
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Modelo de Ejemplo - Inserción
Agregar a Casas los datos
de la tabla Otras_Casas
En algebra relacional,
Agregamos a la relación
Casas un conjunto de tuplas
Producto de una selección
En SQL:
INSERT INTO Casas
SELECT * FROM
Otras_Casas
Luego del INTO tenemos
la relación sobre la que
vamos a agregar la
Información.
A continuación tenemos la
expresión del algebra
relacional que indica
el conjunto de tuplas a
agregar. En este caso
una selección.
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Modelo de Ejemplo - Modificación
Aumentar en 10 % el valor
de las propiedades de la
calle Moreno
En algebra relacional,
realizamos una selección
de tuplas y modificamos
el valor de algún atributo
En SQL:
UPDATE Casa
SET Valor = Valor * 1.1
WHERE Calle=‘Moreno’
Luego del UPDATE tenemos
la relación a modificar.
Luego del SET, los atributos
que se modificarán
Luego del WHERE, tenemos
las condiciones de la
operación de selección. Si no
seleccionamos, modificaremos todas las tuplas de
la relación.
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Modelo de Ejemplo - Eliminación
Queremos borrar todas las
casas de la calle Azurduy
En algebra relacional,
realizamos una selección
de tuplas y las
eliminamos
En SQL:
DELETE FROM Casa
WHERE Calle=‘Azurduy’
Luego del DELETE FROM
tenemos la relación
de la cual borraremos
Luego del WHERE, tenemos
las condiciones de la
operación de selección. Si
no seleccionamos,
borraremos todas las
tuplas de la relación
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
Modelo de Ejemplo – Consultas Multitabla
Queremos mostrar los
teléfonos de las casas
de la calle Pedraza
En algebra relacional,
realizamos una reunión
natural. Comprende un
producto cartesiano y
una selección
En SQL: SELECT
c.Calle, c.Numero, tc.Telefono
FROM Casa c INNER JOIN
Telefono_Casa tc ON
(c.Calle = tc.Calle AND
c.Numero = tc.Numero)
WHERE Calle=‘Pedraza’
σ c.Calle=tc.Calle;
c.Numero=tc.Numero
(Casa c X Telefono_Casa tc)
Luego del ON
identificamos los atributos
repetidos en ambos
esquemas
Luego del WHERE, tenemos
las condiciones de la
operación de selección.
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
SELECT - Partes y Orden de resolución
SQL
„
„
„
„
„
„
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
Álgebra Relacional
Proyección
Definición de Relaciones (renombramiento, reunión
natural, etc.)
Selección
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
SELECT - Partes y Orden de resolución
SQL
„
„
„
„
„
„
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
Orden de Resolución
6
1
2
3
4
5
Rendimiento de Bases de Datos
Sistemas de Datos
Curso: Ernesto Chinkes
SELECT - Partes y Orden de resolución
SQL
„
„
„
„
„
„
SELECT apellido, MAX (Nro_Registro)
FROM ALUMNO
WHERE apellido Like ‘P%’
GROUP BY apellido
HAVING COUNT (*) > 3
ORDER BY apellido
Descargar