Clase práctica de Lenguajes - AR - CRT - SQL

Documentos relacionados
BASES DE DATOS Lenguajes de Consulta

BASES DE DATOS Lenguajes de Consulta

Bases de datos 1. Teórico: Algebra Relacional

Video Club Tarea 2 - Solución

SQL. Carlos A. Olarte BDI

álgebra relacional 2

Bases de Datos Distribuidas -Antecedentes

Unidad 3. Álgebra Relacional y Cálculo Relacional

Álgebra Relacional. Carlos A. Olarte BDI

BASES DE DATOS I CONSULTA DE DATOS

Tema 5 Algebra Relacional

Cátedra de Base de Datos

SQL (DML) Carlos A. Olarte Gestión y Modelación de SQL Datos (DML)

EXAMEN DE ESTRUCTURAS DE LA INFORMACIÓN (Junio 2010)

TEMA: CONSULTAS (ALGEBRA RELACIONAL Y SQL)

Algebra Relacional Curso Bases de Datos

SQL. Dra. Amparo López Gaona () Posgrado en Ciencia e Ingeniería de la Compu. Abril 2012 / 14

TEMA 6.- LENGUAJES DE CONSULTA FORMALES.

SQL. Amparo López Gaona. México, D.F. Noviembre 2003

Bases de Datos. Práctica 7 WinRDBI. Consultas en cálculo relacional y SQL

Algebra Relacional. Bases de Datos 2 - Tecnologo de Informatica. BD2 - Algebra Relacoinal

DML SQL II. Comparaciones con relaciones

Tarea 2 - Consultas en SQL Solución propuesta por los docentes

Bases de Datos. Álgebra Relacional

Algebra Relacional Algebra Relacional

Uso de SQL. "WHERE id = " + cuentas[i].getid() o bien ResulSet r =s.executequery("select nombre FROM alumno" + "WHERE id = " + cuentas[i].

Catedra de Base de Datos

Consultas SQL INNER JOIN

Operador Restricción

AR - Marco General. Álgebra Relacional AR - SELECT. AR - SELECT - Propiedades. 19/Agosto/2016

1º) Consulta que pida mes y año y muestre los datos completos de los obreros que han trabajado sin repeticiones. C11

El Modelo Relacional - Dinámica-

El Modelo Relacional: Dinámica y Álgebra Relacional. El Modelo Relacional Tema 8

Bases de Datos SQL - Ejemplos

Ser capaces de realizar una consulta dentro de otra

Guía 3. ÁLGEBRA RELACIONAL.

SQL: Consultas Avanzadas. Bases de Datos

Álgebra relacional. Álgebra Relacional. Franco Guidi Polanco. Semántica de los Operadores del Álgebra Relacional: Unión. Propiedad de cierre

CC42A: Bases de Datos Auxiliar: Optimizacion Consultas SQL

Optimización. Bibliografía: Fundamentos de bases de datos Korth, Silberschatz

EXAMEN DE ESTRUCTURAS DE LA INFORMACIÓN (Junio de 2008)

Curso SQL Nivel Avanzado 1. Miguel Jurado García

Temario. Índices simples Árboles B Hashing

select nombre from profesores where categoria='aso6';

4. Algebra relacional

BASES DE DATOS I ALTERNATIVA DE SOLUCIÓN AL TALLER 2: SQL ( ) Persona( doc_id, nombre, direccion ) Vehiculo( numero_licencia, año, marca )

Ficheros y Bases de Datos Curso Primer Parcial. 7 de FEBRERO de Nombre:

Bases de Datos y Sistemas de Información Curso Ingeniería Superior Primer Parcial.

SQL DML Select. Ges$ón y Modelación de Datos. María Constanza Pabón

Sistemas de Datos Curso: Ernesto Chinkes. SQL Básico Algebra Relacional

Guía de ejercicios de SQL Prof. Mauricio E. Fernández N. Semestre Agosto-Diciembre de 2012

LENGUAJE DE MANIPULACIÓN DE DATOS (DML) OPERADORES DE ÁLGEBRA RELACIONAL

Sql Basico. Seminar Introduction

Repaso de Conceptos Básicos de Bases de Datos

S.Q.L. (Lenguaje de Consulta Estructurada) Consultas Avanzadas. Sistemas de Bases de Datos II - ITS EMT CETP

SÍLABO. : Obligatorio : Ingeniería de Sistemas : IS0704. : VII Ciclo : 03 Teoría y 02 Práctica : 04 : Lenguaje de Programación II

Laboratorios de BASES DE DATOS. (I.T. Informática)

Vistas en InformiX Sistemas de Bases de Datos II EMT CETP A/S Leonardo Carámbula

Consulta - select * from cliente whe Página número 1

Ing. Santiago C. Pérez Laura Noussan Lettry Carlos Campos

UNIVERSIDAD RICARDO PALMA FACULTAD DE INGENIERÍA

Unidad. Lenguaje SQL. (Structured Query Language)

OPERACIONES FUNDAMENTALES DEL ÁLGEBRA RELACIONAL. Bases de Datos Ingeniería de Sistemas y Computación Universidad Nacional de Colombia 2007

FUNDAMENTOS DE LAS BASES DE DATOS ( ) Datos Generales

CC BASES DE DATOS OTOÑO 2018

FR Construcción y Servicios S de RL de CV.

CC BASES DE DATOS PRIMAVERA Clase 5: Álgebra Relacional. Aidan Hogan

DML en SQL. Consultas sencillas usando el DML de SQL

CC BASES DE DATOS PRIMAVERA Clase 7: SQL (II) Aidan Hogan

Álgebra relacional. Franco Guidi Polanco. Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 10. Álgebra Relacional

Sistemas de Información II Tema 6. Álgebra relacional

Ficheros y Bases de Datos Curso Ingeniería Técnica de Informática Primer Parcial. 3-Septiembre Nombre:

SQL: Lenguaje de Interrogación Estructurado

Consultas en JPA-QL. Sistemas de Persistencia de Objetos

DI SEÑO DE BASES DE DATOS Y SEGURIDAD DE LA INFORMACIÓN (31 de mayo de 2005) 3DUFLDO. APELLIDOS: NOMBRE: TITULACIÓN (Sistemas/Gestión):

Universidad Nacional de Luján Departamento de Ciencias Básicas Base de Datos

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales

FICHEROS Y BASES DE DATOS 2º ITIG 13/7/2001 NOMBRE

EJERCICIOS RESUELTOS

m046a Curso Consultando SQL Server 2005/2008 con Transact-SQL, 15 h

SUBCONSULTAS SUBCONSULTAS

Transcripción:

DC - FCEyN - UBA BBDD - 2C - 2017

Temario Intro Introducción: breve repaso de la notación de. Una guía de 6 ejercicios que vamos a ir resolviendo. En, luego en y luego en.

Operadores Binarios Unión compatible Unión: R S Intersección: R S Resta: R S Producto Cartesiano:R S División: R S Juntas Inner Join: R c S R S Operadores Unarios Renombra atributos: ρ (a1 a2, b1 b2, R) Renombra una relación: ρ (S, R R) Selección: σ c R Proyección: π atributo R OuterJoin: R S R S R S

Esquema de Relaciones Intro Actor(idActor, nombreactor, edad) Serie(idSerie, nombreserie, idgé.... nero,.... añoinicio, añofin) Género(idGénero, nombregénero) Canal(idCanal, nombrecanal) Participa En( idactor,......... idserie)...... Transmite( idcanal,......... idserie).......

Listar los nombres de los actores mayores de 30 años que participan en la serie Friends. ρ(actor SERIE, PTICIPA EN ACTOR SERIE) ρ(friends MAY 30, σ nombreserie= Friends edad>30(actor SERIE)) ρ(resultado, π nombreactor (FRIENDS MAY 30))

Listar los nombres de los canales que transmiten todas las series de comedia. ρ(id SERIE COMEDIA, π idserie (σ nombregenero=comedia (SERIE GENERO))) ρ(id CANAL TODAS COMEDIAS, TRANSMITE ID SERIE COMEDIA ρ(resultado, π nombrecanal (ID CANAL TODAS COMEDIAS CANAL)

Listar los nombres de los actores mayores de 30 años que participan en la serie Friends y que además participaron alguna vez en series que comenzaron luego del año 2000. ρ(id ACTOR FR MAY 30, π idactor (σ nombreserie= Friends edad>30 (PTICIPA EN ACTOR SERIE))) ρ(id ACTOR DESP 2000, π idactor (σ añoinicio>2000 (PTICIPA EN SERIE)) ρ(id ACTOR 1 Y 2, ID ACTOR FR MAY 30 ID ACTOR DESP 2000) ρ(resultado, π nombreactor (ID ACTOR 1 Y 2 ACTOR))

Listar los nombres de los actores mayores de 30 años que participan en la serie Friends y que además nunca participaron en series que comenzaron luego del año 2000. Reutilizaremos la relación ID ACTOR FR MAY 30 del ejercicio anterior. Obtendremos un conjunto con los actores que sí participaron en series que se iniciaron luego del 2000 y luego al conjunto de todos los actores le restaremos este conjunto. ρ(id ACTOR DESP 2000, π idactor (σ añoinicio>200 (PTICIPA EN SERIE))) ρ(id ACTOR NO DESP 2000, π idactor (ACTOR) ID ACTOR DESP 2000)) ρ(id ACTOR 1 Y 2, ID ACTOR FR MAY 30 ID ACTOR NO DESP 2000) ρ(resultado, π nombreactor (ID ACTOR 1 Y 2 ACTOR))

Listar los ids de las series que comenzaron más recientemente. ρ(serie1, SERIE) ρ(serie2, SERIE) Obtenemos series que no son mas recientes y luego restamos ρ(id SERIE INICIO NO MAS RECIENTE, π SERIE1.idSerie ( σ SERIE1.añoInicio<SERIE2.añoInicio (SERIE1 SERIE2)) ρ(resultado, π idserie (SERIE) ID SERIE INICIO NO MAS RECIENTE)

Listar los ids de los actores que participaron en al menos 2 series. ρ(p1, PTICIPA EN) ρ(p2, PTICIPA EN) ρ(resultado, π idactor (σ P1.idActor=P2.idActor P1.idSerie P2.idSerie (P1 P2))

Listar los nombres de los actores mayores de 30 años que participan en la serie Friends. {t/ a, s, p(a ACTOR a.edad > 30 s SERIE s.nombreserie = Friends p PTICIPA EN p.idactor = a.idactor p.idserie = s.idserie t.nombreactor = a.nombreactor)}

Listar los nombres de los canales que transmiten todas las series de comedia. {t/ c(c CANAL t.nombrecanal = c.nombrecanal s (esseriecomedia(s) = tra(tra TRANSMITE tra.idcanal = c.idcanal tra.idserie = s.ideserie))} Definimos esseriecomedia como: esseriecomedia(s) = s SERIE g(g GENERO g.idgenero = s.idgenero g.nombregenero = Comedia )

Listar los nombres de los actores mayores de 30 años que participan en la serie Friends y que además participaron alguna vez en series que comenzaron luego del año 2000. {t/ a(a ACTOR mayorde30yenfriends(a) actuodesp2000(a) t.nombreactor = a.nombreactor)} mayorde30yenfriends(a) = a.edad > 30 s, p(s SERIE s.nombreserie = Friends p PATICIPA EN p.idactor = a.idactor p.idserie = s.idserie) actuodesp2000(a) = s, p(s SERIE s.añoinicio > 2000 p PTICIPA EN p.idactor = a.idactor p.idserie = s.idserie)

Listar los nombres de los actores mayores de 30 años que participan en la serie Friends y que además nunca participaron en series que comenzaron luego del año 2000. {t/ a(a ACTOR mayorde30yenfriends(a) nuncaenseriedesp2000(a) t.nombreactor = a.nombreactor)} nuncaenseriedesp2000(a) = s(s SERIE s.añoinicio > 2000 p(p PTICIPA EN p.idactor = a.idactor p.idserie = s.idserie)

Listar los ids de las series que comenzaron más recientemente. {t/ s(s Serie t.idserie = s.idserie iniciomasreciente(s))} Inicio más reciente indica que son aquellas tales que no haya otra que comenzó después. iniciomasreciente(s) = s (s SERIE s.añoinicio>s.añoinicio)

Listar los ids de los actores que participaron en al menos 2 series. {t/ a(a ACTOR t.idactor = a.idactor partenalmenosdosseries(a))} Debería haber 2 tuplas diferentes en PTICIPA EN para el mismo actor partenalmenosdosseries(a) = p, p (p PTICIPA EN p PTICIPA EN p p p.idactor = a.idactor p.idactor = a.idactor)

Listar los nombres de los actores mayores de 30 años que participan en la serie Friends. 1 SELECT a.nombreactor 2 FROM actor a 3 INNER JOIN participa_en p ON a.idactor = p.idactor 4 INNER JOIN serie s ON p.idserie = s.idserie 5 WHERE a.edad > 30; 6 AND s.nombreserie = "Friends";

Listar los nombres de los canales que transmiten todas las series de comedia. A simpler (and better) approach to relational division. Q0: 1 SELECT c.nombrecanal FROM canal c WHERE c.idcanal IN ( 2 SELECT t.idcanal 3 FROM Transmite t 4 INNER JOIN Serie s ON t.idserie = s. idserie 5 INNER JOIN Genero g ON g.idgenero = s.idgenero 6 WHERE g.nombregenero = Comedia 7 GROUP BY t.idcanal 8 HAVING COUNT( ) = 9 ( SELECT count( ) 10 FROM serie s 11 INNER JOIN Genero g ON g.idgenero = s.idgenero 12 WHERE g.nombregenero = Comedia ));

Listar los nombres de los actores mayores de 30 años que participan en la serie Friends y que además participaron alguna vez en series que comenzaron luego del año 2000. 1 SELECT a.nombreactor 2 FROM actor a 3 INNER JOIN participa_en pe ON pe.idactor = a.idactor 4 INNER JOIN serie s ON s.idserie = pe.idserie 5 WHERE s.nombreserie = "Friends" 6 AND a.edad > 30 7 AND EXISTS (SELECT aa.idactor FROM actor aa 8 INNER JOIN participa_en ppe ON ppe.idactor = aa.idactor 9 INNER JOIN serie s ON se.idserie = ppe.idserie 10 WHERE aa.idactor = a.idactor 11 AND se.anoinicio > 2000);

Listar los nombres de los actores mayores de 30 años que participan en la serie Friends y que además nunca participaron en series que comenzaron luego del año 2000. 1 SELECT a.nombreactor 2 FROM actor a 3 INNER JOIN participa_en pe ON pe.idactor = a.idactor 4 INNER JOIN serie s ON s.idserie = pe.idserie 5 WHERE s.nombreserie = "Friends" 6 AND a.edad > 30 7 AND NOT EXISTS (SELECT aa.idactor FROM actor aa 8 INNER JOIN participa_en ppe ON ppe.idactor = aa.idactor 9 INNER JOIN serie s ON se.idserie = ppe.idserie 10 WHERE aa.idactor = a.idactor 11 AND se.anoinicio > 2000);

Listar los ids de las series que comenzaron más recientemente. 1 SELECT s.idserie from serie s 2 WHERE s.anoinicio = (Select MAX(anoInicio) from serie);

Listar los ids de los actores que participaron en al menos 2 series. 1 SELECT pe.idactor 2 FROM participa_en pe 3 GROUP BY pe.idactor 4 HAVING COUNT(pe.idSerie) >= 2;