Resolucion-2do-Parcial Base de Datos

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

description

parcial

Transcript of Resolucion-2do-Parcial Base de Datos

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

Page 2: Resolucion-2do-Parcial Base de Datos

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