Resolucion-2do-Parcial Base de Datos
-
Upload
sebastian-bustamante -
Category
Documents
-
view
219 -
download
5
description
Transcript of Resolucion-2do-Parcial Base de Datos
Resolución 2º Parcial de Base de Datos I
Alumno: Matrícula:
Una heladería lleva un registro detallado de todas las ventas que realiza en las siguientes tablas: TICKET ( #Ticket, #Cliente, Fecha, Hora, Importe) ITEM_TICKET ( #Ticket, Nro_Item, #Contenedor) SABOR_ITEM ( #Ticket, Nro_Item, #Sabor) SABORES ( #Sabor, Nombre, Costo_x_kg) CLIENTES ( #Cliente, Nombre) CONTENEDOR ( #Contenedor, Descripción, Precio_Venta) (Los ejemplos de contenedores son: Vasito pequeño, Vasito Mediano, Vasito Grande, Cucurucho, Cuarto Kilo, Medio Kilo, etc.) Se pide resolver en Álgebra Relacional: 1.- Listar el nombre del sabor más costoso de fabricar. S1 = SABORES S2 = SABORES
(π S1.#Sabor, S1.Nombre S1) – { π S1.#Sabor, S1.Nombre [δS1.Costo_x_kg < S2.Costo_x_ kg (S1 x S2 )]} 2.- Listar el número y nombre de los clientes que pidieron helados de un solo sabor en el mes de noviembre 2009.
SI1 = π Ticket.#Tiket, #Cliente, Nro_Item, #Sabor { [SABOR_ITEM |X| (δ Fecha>= ‘20091101’ ∧ Fecha<= ‘20091130’ TICKET ) ] } SI2 = SI1
I2S = π SI1.#Ticlet, SI1.Nro_Item, SI1.#Cliente [ δ SI1.#Ticket = SI2.#Ticket ∧ SI1.#Nro_Item = SI2.#Nro_Item ∧ SI1.#Sabor <>
SI2.#Sabor ( SI1 x SI2 ) ]
π #Cliente, Nombre ( CLIENTES |X| { π #Ticlet [ ( π #Ticlet, Nro_Item, #Cliente SI1) - I2S ] } ) Se pide resolver en SQL: 3.- Listar el nombre del sabor mas pedido en este año. SELECT S.#Sabor, Nombre FROM SABORES as S, SABOR_ITEM as I, TICKET as T WHERE S.#Sabor=I.#Sabor AND I.#Ticket=T.#Ticket AND Fecha>=’20090101’ GROUP BY S.#Sabor, Nombre HAVING COUNT(*) >= ALL ( SELECT COUNT(*) FROM SABOR_ITEM as I, TICKET as T WHERE I.#Ticket=T.#Ticket AND Fecha>=’20090101’
GROUP BY #Sabor )
4.- Listar el número y nombre de los clientes que compraron helados en todos los tipos de contenedores con un precio de venta hasta $ 15 que existan, desde el comienzo del 2008 hasta la fecha. SELECT #Cliente, Nombre FROM CLIENTES as C WHERE NOT EXISTS (SELECT * FROM CONTENEDORES as O WHERE Precio_Venta <= 15 AND NOT EXISTS ( SELECT * FROM ITEM_TICKET as I, TICKET as T WHERE I.#Ticket=T.#Ticket AND Fecha>=’20080101’ AND I.#Contenedor=O.#Contenedor AND C.#Cliente=T.#CLIENTE ) )