BASES DE DATOS Lenguajes de Consulta

Documentos relacionados
BASES DE DATOS Lenguajes de Consulta

Dadas las relaciones R y S calcular: a. R U S b. R S c. R x S d. R x S e. B (R) f. A=C (R X S) g. S T h. R x S R.B<S.C

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

- PARTIDO (nomequipo1, nomequipo2, año, estadio, fecha, goleseq1, goleseq2)

Conjunto de operadores para consultar BD-Rs. Define conjunto de ops estándar en BD-Rs. Operadores que reciben relaciones y devuelven relaciones:

TEMA 4 LENGUAJES RELACIONALES EJERCICIOS PROPUESTOS

Calculo Relacional de Tuplas. Lic. Andrea Manna

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

PRÁCTICA #6 TIPOS DE DATOS ESTRUCTURADOS: Arreglos, Registros y Archivos

Elementos de Bases de Datos

Guía de ejercicios # 2: Modelo Relacional Versión del 03/09/2010

TEMA: CONSULTAS (ALGEBRA RELACIONAL Y SQL)

Base de Datos Práctica de Modelización

Nombre: Se debe entregar esta hoja

Bases de Datos 1. Teórico: Structured Query Language

D L M M J V S

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

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

1 Campeonato de futbol

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

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

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

Matrices y operaciones con Matrices.

MULTIPLICACIÓN DE POTENCIAS DE IGUAL BASE

Unidad 5: MODELO DE COMPORTAMIENTO - ESQUEMA DE DATOS CARACTERÍSTICAS DEL ESQUEMA DE DATOS DIAGRAMA ENTIDAD RELACIÓN (D.E.R.)

Tema 5 Algebra Relacional

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

SQL. Fundamentos de Bases de Datos. Concepción de Sistemas de Información Instituto de Computación Facultad de Ingeniería Universidad de la República

Bases de Datos: fundamentos del modelo relacional

Bases de Datos 2. Teórico

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información 1º año

Elementos de Bases de Datos

Modelo Conceptual Modelo Entidad - Relación

Carlos A. Rivera-Morales. Precálculo 2

Operador Restricción

PRÁCTICA #7 -- Tipos de Datos Estructurados

1. Escribir un programa que rellene un vector con los números enteros comprendidos entre 4 y Escribir un programa que rellene un vector con

Diseño de Bases de Datos. Normalización

Ing. Yim Isaias Apestegui Florentino

Trabajo Práctico 5 Estructura Repetitiva

En la terminal de micros de Retiro se cuenta con un sistema con el siguiente esquema de base de datos:

Álgebra Relacional. Carlos A. Olarte BDI

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

Elementos de Bases de Datos

Cadenas de caracteres

Conceptos básicos de álgebra relacional

Primer Parcial de Fundamentos de Base de Datos

Sistemas de ecuaciones.

Bases de datos 1. Teórico: Algebra Relacional

1. DML. Las consultas multitabla

Cálculo Relacional. Bibliografía: Fundamentos de bases de datos Korth, Silberschatz

BASES DE DATOS NoSQL

Sistemas de Bases de Datos I. Modelo Conceptual. Modelo Entidad-Relación

Universidad de Antioquia Facultad de Ciencias Exactas y Naturales Instituto de Matemáticas

PARTE 1 OPERACIONES FINANCIERAS A INTERÉS SIMPLE T E M A S. Aplicación: Títulos de deuda del gobierno mexicano y del sector privado que se venden con

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

Sistemas de Bases de Datos I. Modelo Conceptual. Modelo Entidad Relación

Arquitectura de Computadoras 2015 Práctico 03. Práctico 3. Álgebra de Boole. Método de Karnaugh. Circuitos lógicos combinatorios.

El Modelo Relacional (5 de 5)

Guía de Álgebra Relacional

FUNDAMENTOS DE BASES DE DATOS. Examen Diciembre 2003

Base de Datos Práctica de Modelización

Examen de Ficheros y bases de datos ( ) Convocatoria de febrero I PARCIAL

Sistemas de ecuaciones.

EJERCICIOS DE EXCEL 2013

ADMINISTRACIÓN DEL MANEJO DE BASE DE DATOS MySQL. Dr. Ricardo Raúl Jacinto Montes

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):

Bases de Datos Distribuidas -Antecedentes

Colegio Internacional Torrequebrada. Departamento de Matemáticas

Conocimiento de las Bases de Datos relacionales.

Álgebra y Geometría Analítica I - LF 2016 Práctica 1: Algunos elementos de la Geometría Analítica

MANUAL DEL DOCENTE. Sistema de Información Integrado de Gestión Académica v.2.0

PRÁCTICO N o 3 Resolución de Problemas - Lenguaje de Problema

Conceptos Avanzados de Bases de datos

Práctica 2: CONSULTAS

Programación. Ejercicios Tema 6 Tipos de Datos Estructurados: Vectores y Matrices

Laboratorio - Parte 3 SQL. 15 de mayo de 2017

TEMA II. El Modelo Relacional de Datos. El Modelo Relacional de Datos. El Modelo Relacional de Datos. El Modelo Relacional de Datos. Temario (cont.

Práctico 5 Diseño Relacional-Dependencias Funcionales

Apartado A (3 puntos):

El Modelo Relacional. Carlos A. Olarte BDI

Unidad 3. Álgebra Relacional y Cálculo Relacional

Estructuras de datos anidadas

MANUAL DE ORDENES DE PRODUCCION

Sistemas de ecuaciones lineales

FUNDAMENTOS NUMÉRICOS SEMANA 4

Sistema de Torneo y Premios Liga San Pedro - Temporada 2016 Serie Sénior (desde 28 años*)

Bases de Datos Curso Grado en Ingeniería del Software Examen Junio. Nombre:

ÁREA: MATEMÁTICAS UNIDAD : 1 TEMPORALIZACIÓN: OCTUBRE 1ª QUINCENA OBJETIVOS CONTENIDOS CRITERIOS DE EVALUACIÓN

CC42A: Bases de Datos Auxiliar: Optimizacion Consultas SQL

Cálculo Relacional. Temas. Lenguajes de Consulta. Cálculo Relacional de Tuplas. Fórmulas Seguras. Cálculo Relacional de Dominios.

Introducción al Modelo Relacional

Cálculo Relacional. Temas. Lenguajes de Consulta. Cálculo Relacional de Tuplas. Fórmulas Seguras. Cálculo Relacional de Dominios.

MATEMÁTICAS ÁLGEBRA (TIC)

I MEDITERRANEAN GOLF CHAMPIONSHIP 2017

6.1 Introducción. Fund. Bases de Datos Ing. Felipe Alanís González -ITD- 1

SQL: Lenguaje de Interrogación Estructurado

SELECT listadecampos FROM nombredetablas WHERE condicionesdebúsqueda;

Base de datos relacional

Modelo Relacional. Temas:

Transcripción:

UNIVERSIDAD DE BUENOS AIRES FACULTAD DE CIENCIAS EXACTAS Y NATURALES DEPARTAMENTO DE COMPUTACIÓN BASES DE DATOS Lenguajes de Consulta GUÍA DE EJERCICIOS

1 AR y CRT 1.1. Dadas las relaciones R, S y T calcular: (a) R S (b) R S (c) R S (d) R S (e) π B (R) (f) σ A=C (R S) (g) S T S (h) R R.B<S.C S R: A B a b b c c b d e S: B C b c e a b d T: C c d 1.2. Considerando el siguiente esquema de una base de datos: FRECUENTA(Persona, Bar) SIRVE (Bar, Cerveza) GUSTA(Persona, Cerveza). Expresar las siguientes consultas usando álgebra relacional (AR): (a) Bares que sirven alguna cerveza que le guste a Juan K. (b) Personas que frecuentan al menos un bar que sirve alguna cerveza que les guste. (c) Personas que no frecuenten ningún bar que sirva una cerveza que les guste. (d) Personas que frecuentan todos los bares. (Asumir que todos los bares sirven al menos una cerveza). 1.3. Dado R(a) un esquema de relación. Exprese en AR la consulta que devuelve las tuplas t r(r) tal que t[a] t [a] t r(r)(o sea, el mínimo a para todas las tuplas de la relación). 1.4. DadoR(a, b) un esquema de relación. Exprese en AR la consulta que devuelve las tuplas t r(r) tal que t[b] t [b] t r(r)/t [a] = t[a] (o sea, los mínimos b por cada unos de los grupos de tuplas de la relación que cumplen que el valor para el atributo a es el mismo). 1.5. Dado R(a, b) un esquema de relación. Exprese en AR la consulta que devuelve las tuplas t r(r) tal que t, t r(r)/t[a] = t [a] t[b] t [b]. 1.6. Dado R(a, b) un esquema de relación. Exprese en AR la consulta que devuelve las tuplas t r(r) tal que t, t r(r)/t[a] = t [a] t[b] t [b] y que además t /t[a] = t [a] t[b] t [b] t [b] t [b]. 1

2 AR, CRT y SQL 2.1. Considerando el siguiente esquema de una base de datos: Se pide: ALUMNO (NroLU, Nombre, Edad, Sexo, FecIngreso) MATERIA (IdMateria, Nombre) CURSA (NroLU, IdMateria) CARRERA (IdCarrera, Nombre) DOCENTE (Legajo, Nombre) DICTA (Legajo, IdMateria) PLAN( IdPlan, Nombre, IdCarrera) PLAN DE ESTUDIO(IdPlan, IdMateria) (a) Mediante SQL, AR y CRT listar los nombres y edades de los alumnos mujeres que ingresaron en el año 2009. (b) Mediante SQL, AR y CRT listar para cada alumno las materias que cursa. Se deberá mostrar el nombre del alumno y el nombre de la materia. (c) Mediante SQL, AR y CRT listar para cada alumno el nombre de la carrera que cursa. (d) Mediante AR y CRT obtener los nombres de las materias que tienen más de 1 alumno hombre mayor de 30 años. (e) Mediante SQL obtener los nombres de las materias que tienen más de 50 alumnos hombres mayores de 30 años. Es posible resolver esta consulta usando AR y CRT? Justifique la respuesta. (f) Mediante SQL indicar cuántas materias tiene cada Plan de estudios de la carrera Ciencias de la Computación. (g) Mediante SQL y AR listar los nombres de los alumnos mayores de 25 años que cursan todas las materias de la carrera Ciencias de la Computación que no son dictadas por el profesor Jeff Ullman (h) Mediante SQL indicar para cada materia en cuántos planes de estudio se requiere cursar dicha materia. (i) Mediante SQL resolver el punto b) incluyendo en el listado los alumnos que no están cursando ninguna materia. (j) Mediante SQL listar los nombres de las materias que tienen más de 30 alumnos inscriptos NOTA: Los nombres y las descripciones no se repiten. No hay valores nulos. Sexo puede ser M o F. Una materia puede ser dictada por más de un docente 2.2. Sea el siguiente esquema de relación: Empleado(empleadoID, nombre, apellido, reportaa), En donde reportaa es el empleadoid que corresponde a su jefe. Se pide resolver en SQL: (a) Listar todos los empleados junto a su jefe. Las tuplas resultantes tendrán la siguiente forma: (nombre empleado, apellido de empleado, nombre jefe, apellido de jefe) (b) Resolver el ítem anterior pero que no falte ningún empleado en el listado. 2

2.3. Considerando el siguiente esquema de una base de datos: FRECUENTA(Persona, Bar) SIRVE (Bar, Cerveza) GUSTA(Persona, Cerveza). Se pide en SQL obtener: (a) Bares que sirven alguna cerveza que le guste a Juan K. (b) Personas que frecuentan al menos un bar que sirve alguna cerveza que les guste. (c) Personas que no frecuenten ningún bar que sirva una cerveza que les guste. (d) Personas que frecuentan todos los bares. (Asumir que todos los bares sirven al menos una cerveza). (e) Definir una vista que devuelva una relación de la forma (p, c, b) de tal manera que a la persona p le gusta la cerveza c, el bar b sirve la cerveza c y la persona p frecuenta el bar b. 2.4. Suponga que al esquema del ejercicio anterior le agregamos la siguiente relación Se pide VENDE (Bar, Cerveza, Cantidad) (a) Obtener en SQL el promedio de cerveza vendida por bar (b) Obtener en SQL el total vendido de cada cerveza por bar, excluyendo a los que no venden la cerveza. (c) Obtener en SQL la máxima cantidad de cerveza vendida, tomando en cuenta que una cerveza puede ser vendida por más de un Bar. 2.5. Sea el siguiente esquema de relación: PERSONA (Nombre, Progenitor), AMIGO(Nombre1, Nombre2). El atributo Progenitor indica para cada PERSONA el NOMBRE de su padre y puede tener valor NULL. (a) Suponga que la relación AMIGO es tal que (a, a) / AMIGO para ningún a y que si (a, b) AMIGO entonces (b, a) / AMIGO. i. Expresar en el álgebra relacional y en cálculo relacional de tuplas la consulta que devuelve como resultado a aquellas personas cuyos padres no tienen amigos. ii. Expresar en el álgebra relacional y en cálculo relacional de tuplas la consulta que devuelve como resultado a aquellas personas cuyos amigos son amigos de sus padres. iii. Exprese una consulta SQL que devuelva como resultado a las personas que tengan mas de 8 amigos (b) Suponga que se ha descuidado el control de las tuplas que se ingresan a la base de datos, y que la restricción de antisimetría expresada en a) ya no es válida. Escriba la consulta en SQL que en esta situación resuelve lo pedido en el punto (a)iii. 2.6. Considerando el siguiente esquema de una base de datos: SUCURSAL (codsuc, nomsuc, zona) 3

PRODUCTO (codprod, nomprod, stockcritico) MOVIMIENTO (nromov, fechahora, codsuc,....... signomov) MOV PROD ( nromov,......... codprod,........ cantidad) Obs: fechahora es diferente para cada movimiento. signomov es +1 si es un depósito ó 1 si es un retiro. Obs: stockcritico es la cantidad mínima deseada para TODO el depósito (NO para cada sucursal). Se pide: (a) En AR y SQL, obtener el código y el nombre de las sucursales que el mes de abril del 2010 hayan enviado a depósito TODOS los productos que comercializa la cadena (se encuentran en PRODUCTO) y que también hayan realizado retiros de TODOS los productos. Obs: Los productos no necesariamente se han depositado en un único movimiento sino en varios. Lo mismo vale para los retiros. (b) En SQL, obtener los códigos y los nombres de los productos que algún retiro del mes de abril del 2010 haya dejado con un total almacenado en el depósito por debajo de su stock crítico. Obs: El stock de un producto en un momento dado es igual a la suma (con signo) de todos los movimientos de ese producto realizados hasta dicho momento. (c) En AR (sin funciones de agregación) y SQL (sin vistas ni sub-queries en el FROM) obtener el código y el nombre de los productos tales que, durante el mes de abril del 2010: toda sucursal haya retirado en al menos dos oportunidades y no haya realizado ningún depósito (las dos condiciones deben ser satisfechas por cada sucursal). (d) En SQL (sin vistas ni sub-queries en el FROM), obtener el número de movimiento, el código y nombre de la sucursal asociada de aquellos depósitos del mes de abril del 2010 tales que: la cantidad depositada de cada uno de los ítems que lo componen es superior al stock del producto correspondiente para la sucursal asociada. Por ejemplo: si la sucursal S en el movimiento X depositó los productos A, B y C; entonces la cantidad depositada de A es superior al stock hasta ese momento del producto A para la sucursal S (dicho stock es: la suma con signo de todos los movimientos del producto A para S), ídem para B e ídem para C. 2.7. Considerando el siguiente esquema de una base de datos que guarda información sobre series: 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)....... Se pide en SQL: (a) Listar los nombres de los actores mayores de 30 años que participan en la serie Friends. (b) Listar los nombres de los canales que transmiten todas las series de comedia. 4

(c) 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 (d) 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. (e) Listar los ids de las series que comenzaron más recientemente. (f) Listar los ids de los actores que participaron en al menos 2 series. (g) Suponiendo que puede haber nombres de serie repetidos, listar los nombres que hayan sido usados en dos o más series (h) Considerando lo mismo del ejercicio anterior, listar todos los canales que trasmiten alguna serie que tiene el nombre repetido. (i) Obtener la serie con el promedio de edad (de los actores) mas alto. (j) Obtener la genero donde participa el actor más joven. 2.8. Considerando el siguiente esquema de una base de datos con los partidos de fútbol de Primera A: PARTIDO (equipo1, equipo2, torneo, goles1, goles2, puntos1, puntos2) JUGADOR (nombre, edad, equipo) Cada partido se registra una sola vez. Por ejemplo si Boca le ganó a River en el torneo Apertura 2002 por 2 a 1, se registra únicamente la tupla ( Boca, River, Apertura 2002, 2, 1, 3, 0) Los candidatos a campeones de un torneo se determinan sumando los puntos obtenidos por cada equipo, seleccionando los que suman el máximo valor. Al haber más de un candidato, se resuelve el campeonato tomando en cuenta la diferencia de goles. Para simplificar se asume que ningún jugador cambió de equipo y los nombres no se repiten. Se pide: (a) Expresar en AR las siguientes consultas: i. Listar los equipos que jugaron exactamente en dos torneos. ii. Listar el jugador más joven y el más viejo de cada uno de los equipos que finalizaron invictos (sin perder ningún partido) en al menos dos torneos Las tuplas del resultado son de la forma (equipo, nombre1, nombre2) (b) Dada la misma BD del ejercicio anterior pero ahora considerando que cada partido se registra dos veces. Por ejemplo si Boca le ganó a River en el torneo Apertura 2002 por 2 a 1, se registran dos tuplas ( Boca, River, Apertura 2002, 2, 1, 3, 0) ( River, Boca, Apertura 2002, 1, 2, 0, 3) Expresar en SQL las siguientes consultas: i. Listar los equipos que hayan finalizado invictos en al menos dos torneos. ii. Listar los torneos que finalizaron con más de un candidato a campeón. 2.9. Considerando el siguiente esquema de una base de datos de recetas médicas: 5

ELABORA (laboratorio, droga) PRODUCE (laboratorio, farmaco) VENDE ( farmacia,.......... farmaco,........ precio) COMPUESTO POR ( farmaco,........ droga)...... RECETA (recetaid, fecha, medico, paciente) RECETA FARMACO ( recetaid,........ farmaco)........ ELABORA indica las drogas que elabora cada laboratorio. PRODUCE indica los fármacos que produce cada laboratorio. VENDE indica los fármacos que vende cada farmacia y su precio correspondiente (un mismo fármaco puede tener diferentes precios en distintas farmacias). COMPUESTO POR indica las drogas que componen cada fármaco. RECETA tiene la cabecera de cada receta confeccionada. RECETA FARMACO tiene los fármacos prescriptos en cada receta. (a) Expresar en AR y CRT las siguientes consultas:. i. Listar los laboratorios que no elaboran ninguna de las drogas de los fármacos que producen. ii. Listar las drogas que son componentes de todos los fármacos que fueron prescriptos al menos dos veces antes del 01/10/2010 (b) Expresar en SQL las siguientes consultas: i. Listar las farmacias que venden todos los fármacos que fueron prescriptos más de 5 veces después del 30/09/2010. ii. Listar los fármacos, cuyos precios promedio son mayores a los de todos los prescriptos por los médicos que más fármacos recetaron. iii. Obtener los nombres de los fármacos que son equivalentes (en forma de pares, fármaco1, fármaco2), es decir que están compuestos por las mismas drogas. 2.10. Considerando el siguiente esquema de una base de datos PERSONA(Nombre, Sexo, Fecha Nac, Nombre Madre, Nombre Padre), MATRIMONIO(Nombre Mujer, Nombre Hombre, Fecha Realización, Fecha Fin) Se asume que dos personas pueden contraer matrimonio entre sí más de una vez. Se pide (a) Listar en SQL las personas que hayan tenido algún hijo en su primer matrimonio. (b) Expresar en cálculo relacional de tuplas la consulta que devuelve como resultado los nombres de los hijos extramatrimoniales. (c) Expresar en álgebra relacional la consulta que devuelve como resultado los nombres de los primogénitos de cada matrimonio. Recordar que en álgebra relacional no se dispone de funciones de agregación. 2.11. En el siguiente esquema tenemos dos relaciones, una de ellas representa ítems con su nombre y precio actual mientras la otra guarda información histórica. Cada vez que hay una variación en el precio se guarda en la tabla histórica. Tomar en cuenta que los ítems se guardan solamente cuando cambia el precio y no todos los días. Historia(idItem,fecha guardado, precio) Items (iditem,nombre, precio actual, categoríaid) 6

(a) Realizar en SQL: Una consulta que devuelva el precio histórico promedio de los ítems de categoríaid=1 al 1/7/1999 Nota: no usar SELECT en el FROM, vistas ni tablas auxiliares. (b) Escribir en Algebra Relacional una consulta que devuelva los nombres de los ítems que no tengan precio histórico guardado. (c) Escribir en CRT una consulta que devuelva el ítem con mayor precio actual junto al mayor precio histórico del mismo ítem. 2.12. Dados los siguientes esquemas de relación (donde la relación Amigo es simétrica.) Miembro ( nombrepersona,................ nombregrupo)............... Amigo ( nombrepersona1,................. nombrepersona2)................. Persona (nombrepersona, edad, genero) Grupo (nombregrupo,fechainicio) Se pide: (a) Obtener, en SQL, para cada persona los grupos en los cuales el no es miembro pero todos sus amigos si son miembros. La consulta debe devolver tuplas con (nombrepersona, nombregrupo) donde nombregrupo es el nombre del grupo que cumple con lo que se pide. (b) Realizar en Algebra Relacional una consulta que devuelva las personas que sólo tienen amigos de genero diferente y mayores de 18 años (ej si el genero es masculino solo tendría de genero femenino mayores de 18 y viceversa) (c) Realizar en Calculo Relacional de Tuplas una consulta que devuelva las personas para las que todos sus amigos son miembros de al menos un grupo con fecha de inicio mayor al 1/12/2001. 7