La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Paul Leger http://pleger.cl Algebra Relacional 2 Paul Leger http://pleger.cl.

Presentaciones similares


Presentación del tema: "Paul Leger http://pleger.cl Algebra Relacional 2 Paul Leger http://pleger.cl."— Transcripción de la presentación:

1 Paul Leger http://pleger.cl
Algebra Relacional 2 Paul Leger

2 Repaso (1/4) Proyección (π) Renombrar (ρ) Selección (σ)
Producto Cartesiano (x) Unión (U) Intersección (∩) Diferencia (-)

3 Repasando (2/4): Persona y Ciudad
Rut Nombre NombreC Paul Coquimbo Renato Peor es nada Mariana Fucking NombreC Comentario Coquimbo Buen puerto Chanaral Mucho sol Fucking No muy agradable Peor es nada El nombre basta Chigualoco Para Surf Nueva Columna

4 Repaso (3/4) Muestre todos los nombres de las personas (no mostrar nombres repetidos) πNombre (Persona) ¿Qué entrega πnombreC (Persona) ∩ Ciudad? ¿Qué entrega πnombreC (Persona) ∩ πnombreC(Ciudad)? Muestre la descripción de la ciudad donde vive cada persona

5 Repaso (4/4) CHOFER CHOFER Código_C Nombre Comentario 1 Juan Bueno 2
Carlos 3 Pedro 4 Patricio No sabe estacionar 5 Muy lento Código_C Nombre 1 Juan 2 Carlos 3 Pedro 4 Patricio 5 Comentario 1) ¿En ambos casos, muestre los comentarios de cada chofer que contiene? Codigo_c Comentario 1 Bueno 4 No sabe estacionar 5 Malo 2) Muestre los nombres de los choferes que no tienen comentarios

6 Un más ejemplo para reforzar

7 Ejemplo (1/3): Muestre por cada nombre de una persona, muestra el comentario de donde vive
Ciudad Rut Nombre NombreC Paul Coquimbo Renato Peor es nada NombreC Comentario Coquimbo Buen puerto Peor es nada El nombre basta Chigualoco Para Surf R = πNombre, comentario( σPersona.nombreC = Ciudad.nombreC (Persona x Ciudad) ) Temporal1 = Persona x Ciudad Rut Nombre Persona.NombreC Ciudad.NombreC Comentario Paul Coquimbo Buen Puerto Peor es nada El nombre basta Chigualoco Para Surf Renato

8 Ejemplo (2/3): Muestre por cada nombre de una persona, muestra el comentario de donde vive
Consulta Original “R = πNombre, comentario( σPersona.nombreC = Ciudad.nombreC (Persona x Ciudad) )” Temporal1 = Persona x Ciudad Rut Nombre Persona.NombreC Ciudad.NombreC Ciomentario Paul Coquimbo Buen Puerto Peor es nada El nombre basta Chigualoco Para Surf Renato Temporal2 = σPersona.nombreC = Ciudad.nombreC (Temporal1) Rut Nombre Persona.NombreC Ciudad.NombreC Ciomentario Paul Coquimbo Buen Puerto Renato Peor es nada El nombre basta

9 Temporal2 = σPersona.nombreC = Ciudad.nombreC (Temporal1) Rut Nombre
Ejemplo (3/3): Muestre por cada nombre de una persona, muestra el comentario de donde vive Consulta Original “R = πNombre, comentario( σPersona.nombreC = Ciudad.nombreC (Persona x Ciudad) )” Temporal2 = σPersona.nombreC = Ciudad.nombreC (Temporal1) Rut Nombre Persona.NombreC Ciudad.NombreC Comentario Paul Coquimbo Buen Puerto Renato Peor es nada El nombre basta R = πNombre, comentario(Temporal2) Nombre Comentario Paul Buen Puerto Renato El nombre basta

10 ¿Cuál es la relación resultante?
Ejercicio: Muestre por cada nombre de una persona, su(s) número(s) de teléfono(s) Persona Teléfono Rut Nombre Paul Renato Teléfono Rut ¿Cuál es la consulta? ¿Cuál es la relación resultante?

11 Hoy veremos más operadores
… a divertirse …

12 (Natural) Join (⋈) Este operador realiza un producto cartesiano entre dos relaciones, y solamente rescata las filas, cuyos atributos con el mismo nombre contienen el mismo valor. Nota: El resultado contendrá dos columnas con el mismo nombre y valores (es decir, dos columnas idénticas). Una de esas dos columna es eliminada Preguntas: ¿Qué es R = Persona ⋈ Ciudad ? ¿Cómo se podría escribir Persona ⋈ Ciudad sin usar join? ¿Para qué sirve ⋈ para una base de datos implementada con un modelo relacional?

13 Ejercicio 1: Natural Join con tres relaciones
Persona Ciudad Rut Nombre NombreC Paul Coquimbo Renato Peor es nada NombreC Comentario Coquimbo Buen puerto Peor es nada El nombre basta Chigualoco Para Surf Teléfono ¿Qué es R? R = πNombre, comentario, Telefono (Persona ⋈ Ciudad ⋈ Teléfono) Teléfono Rut

14 Ejercicio 2: Natural Join con tres relaciones
Persona Ciudad Rut Nombre NombreC Paul Coquimbo Renato Peor es nada NombreC Comentario Coquimbo Buen puerto Peor es nada El nombre basta Chigualoco Para Surf TipoAuto Modelo Descripción Sedan Grande Deportivo Pequeño ¿Qué es R1? R1 = πNombre, comentario, Descripcion (Persona ⋈ Ciudad ⋈ TipoAuto) ¿Qué es R2? R2 = πNombre, descripción (Persona ⋈ TipoAuto)

15 Θ-join: El super caso del Natural join
Es un join, donde podemos cambiar las condiciones (= Θ) de comparación (ejemplos >, >= , !=) R=T ⋈Θ S ¿Cómo se podría escribir R= T ⋈Θ S sin usar join?

16 Theta join y Equijoin son más teóricos que prácticos
Es un (natural) join sin eliminar una columna con idéntica Theta join y Equijoin son más teóricos que prácticos

17 Semi Joins (⋉)(⋊) Son un natural joins, sin el contenido (o el resto de los valores de una relación) R1 = T ⋉ S, no incluye los atributos de S R2 = T ⋊ S, no incluye los atributos de T Preguntas: Realice «Persona ⋉ Ciudad”, “Persona ⋊ Ciudad” ¿Cuál es la diferencia de entre ambos? ¿Cómo podemos expresar T ⋉ S, usando solamente ⋊? ¿Cómo se puede expresar en términos de natural join y proyección?

18 Ejercicio Rut Nombre NombreC Paul Coquimbo Renato Fucking Mariana NombreC Comentario Coquimbo Buen puerto Fucking Mucho sol Muestre los nombres de las personas que están viviendo en todas las ciudades

19 Solución C= πnombreC(Ciudad) P= π Rut, nombre(Persona) x C
PersonasViveUnaCiudad = π nombre (P – Persona) (analícelo lentamente) Respuesta = π nombre(Persona) – PersonasViveUnaCiudad

20 División (/) Dada dos relaciones T y S, la división entre T y S (= T/S) retorna … Todas las tuplas de una proyección de S (= πatributos (S)) que … tienen un vinculo (o clave externa) con cada tupla de T

21 División … Muestre los nombres de las personas que tienen hogares en todas las ciudades T = πnombre,nombreC (Persona) S = πnombreC (Ciudad) Resultado = T/S Persona Rut Nombre NombreC Paul Coquimbo Renato Fucking Mariana Ciudad NombreC Comentario Coquimbo Buen puerto Fucking Mucho sol Resultado = T/S Nombre Renato

22 Agregación (G) Permite ejecutar operaciones a grupos de datos
Similar al grupo de funciones de Excel (Suma, promedio, etc) G Max(Sueldo) (Persona) Rut Nombre Sueldo Paul 1000 Renato 2000 Mariana 3000 500 Max 3000

23 Agregación (G) Permite ejecutar varias operaciones al mismo tiempo
G Max(Sueldo), Min(Sueldo), Avg(Sueldo) (Persona) Rut Nombre Sueldo Paul 1000 Renato 2000 Mariana 3000 500 Max Min Avg 3000 500 1625

24 Agregación por Agrupación (G)
Similar al anterior, pero ahora podemos agrupar por un atributo Rut Nombre Sueldo Paul 1000 Renato 2000 Mariana 3000 500 Nombre G Max(Sueldo), Min(Sueldo), Avg(Sueldo) (Persona) Nombre Max Min Avg Paul 1000 Renato 2000 500 1250 Mariana 3000

25 Resumen Aparte de los operadores vistos anteriormente (ej. proyección), tenemos nuevos operadores Se pueden expresar en términos de otros: Natural Join (⋈) Theta (θ) join (θ-⋈) Equi-join (Equi- ⋈) Semi-joins (⋉)(⋊) División (/) No se pueden expresar en términos de otros: Agregación (G) Agrupación para Agregación (G)

26 Ejercicio: Persona, Ciudad y teléfono
Rut Nombre NombreC Paul Coquimbo Renato Peor es nada Mariana Fucking Ciudad Teléfono Rut Telefono NombreC Comentario Coquimbo Buen puerto Chanaral Mucho sol Fucking No muy agradable Peor es nada El nombre basta Chigualoco Para Surf ¿Cuántos teléfonos tiene cada rut?

27 Ejercicios Dadas las relaciones R(r1,r2,r3) y T(r1,r2,r3), responda V o F: σAσB(R) = σBσA(R) ? 1 2 π r1,r2 (R) – T = π r1,r2 (R - T) ? 3 σA v B(R) = σA(R) U σB(R) ? 4 πr2 (σr1=1 (R)) = σr1=1 (πr2 (R)) ? σR.r1 = 1(RxT) = σR.r1 = 1(R)xT ? 5 πR.r2 (R⋈T) = πR.r2 (R)⋈T ?????????? 6

28 Consultas


Descargar ppt "Paul Leger http://pleger.cl Algebra Relacional 2 Paul Leger http://pleger.cl."

Presentaciones similares


Anuncios Google