Está en la página 1de 11

1.

Utilice este modelo de datos para resolver las siguientes preguntas


STOCKBOD (pk)id_fabrica (pk)id_bodega (pk)id_prod stockprod stockcritico stockmaximo costounitario

FabPROVE (pk)id_fabrica (pk)id_prove (fk)id_vended

FABRICA (pk)id_fabrica nom_fabrica

BODEGA (pk)id_fabrica (pk)id_bodega nom_bodega

VENDEDOR (pk) id_prove (pk)id_vended nom_vendedor

PROVEEDOR (pk) id_prove nom_prove

PRODPROV (pk) id_prod (pk) id_prove

PRODUCTO (pk) id_prod nom_prod

a) Genere una consulta para obtener los productos bajo stockcritico,

ordenados por nom_fabrica, id_bodega y nom_prod) (10 puntos) SELECT F.id_fabrica, F.nom_fabrica, B.id_bodega, B.nom_bodega, S.id_prod, P.nom_prod, S.stockprod, S.stockcritico FROM fabrica AS F, bodega AS B, stockbod AS S, producto AS P WHERE (F.id_fabrica = B.id_fabrica) AND (B.id_fabrica = S.id_fabrica AND B.id_bodega = S.id_bodega) AND (S.id_prod = P.id_prod) AND (S.stockprod < S.stockcritico) ORDER BY F.nom_fabrica, B.id_bodega, P.nom_prod
b) Inserte registro en la tabla PRODPROV asumiendo existen registros

relacionados en tablas PROVEEDOR y PRODUCTO, para id_prod = 123344 e id_prove = 789872 (5 puntos) INSERT INTO prodprov (id_prod, id_prove) VALUES (123344, 789872) INSERT INTO prodprov VALUES (123344, 789872)

2. Responda de acuerdo a la siguiente tabla Libros:


Id 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Titulo Cyrano de Bergerac Romeo y Julieta Ivanhoe De la Tierra a la Luna El jugador Eugenia Grandet La Dama de las Camelias Madame Bovary Canto General Afrodita Othello La chica del Crilln David Copperfield El retrato de Dorian Gray El tnel El Prncipe Feliz Crimen y Castigo El mercader de Venecia El socio Niebla Nombre_Autor Edmond William William Julio Fedor Honorato Alejandro Gustavo Pablo Isabel William Joaqun Charles Oscar Ernesto Oscar Fedor William John Miguel Apellido_Autor Rostand Shakespeare Scott Verne Dostoievsky Balzac Dumas Flaubert Neruda Allende Shakespeare Edwards Bello Dickens Wilde Sbato Wilde Dostoievsky Shakespeare Grisham De Unamuno Pas_Autor Francia Inglaterra Escocia Francia Rusia Francia Francia Francia Chile Chile Inglaterra Chile Inglaterra Inglaterra Uruguay Inglaterra Rusia Inglaterra USA Espaa Subgnero Clsico Clsico Clsico Clsico Clsico Clsico Clsico Clsico Poesa Moderno Clsico Clsico chileno Clsico Clsico Clsico latinoamericano Novela Clsico Clsico Novela Clsico Genero Drama Drama Novela Epica Aventuras Novela Novela Novela Novela Poesa Novela Drama Novela Novela Novela Novela Cuento Drama Drama Best-seller Novela

a)

Determine cuntos registros entrega la siguiente consulta SQL: ( 5


puntos)

select Nombre_Autor, Apellido_Autor, Genero from libro where Nombre_Autor like "Wil%" OR Apellido_Autor like "Wil%" AND Genero = "Cuento"; Respuesta: 5
b)

Determine cuntos registros entrega la siguiente consulta SQL: ( 7


puntos)

select Titulo, Subgenero from libro where Titulo not like "% %" OR Subgenero not like "Clsic%" ; Respuesta: 7
c)

Obtenga una consulta SQL que entregue la sub-tabla: (Los pases de autores con menos de 4 libros) (10 puntos) Pas_Autor USA Uruguay Rusia Espaa Escocia Chile Cantidad 1 1 2 1 1 3
2

Respuesta: Select PaisAutor, count(*) as Cantidad From Libro Group by PaisAutor Having count(*) < 4 Order by PaisAutor Desc;

3. Se necesita verificar el costo del stock por producto disponible de aquellos productos no vendidos en ningn local en el perodo (2005 / 06), requirindose en el informe los atributos: idLocal, nombrelocal, idProducto, nombreProducto, Tot_cantidad y Costo_Stock, y ordenando la lista en forma descendente por ranking de Costo_Stock e id_Producto.

Asuma que: YEAR(fecha) y MONTH(fecha) obtienen el ao y mes de la fecha respectivamente. Tot_Cantidad = Sumatoria (Stock.cantidad) Costo_Stock = Sumatoria (Stock.cantidad * Stock.costoUnit) RESPUESTA
SELECT A.idLocal, A.nombre AS nombrelocal, C.idProducto, C.Nombre AS nombreProducto, SUM(B.cantidad) AS Tot_Cantidad, SUM(B.cantidad*B.costoUnit) AS Costo_Stock FROM Local AS A, Stock AS B, Producto AS C WHERE A.idLocal=B.idLocal AND B.idProducto=C.idProducto AND B.idStock NOT IN ( SELECT DISTINCT idStock FROM VtaDetalle, Venta WHERE VtaDetalle.idVenta = Venta.idVenta AND YEAR(fecha)=2005 AND MONTH(fecha)=6 ) GROUP BY A.idLocal, A.nombre, C.idProducto, C.Nombre ORDER BY SUM(B.cantidad*B.costoUnit) DESC;

4. Indique verdadero o falso (V/F) a las siguientes aseveraciones: 1. [__ ] Los subselect anidados son tiles para realizar filtros sobre los datos 2. [__ ] La sentencia having solo se puede utilizar despus de un Group by. 3. [__ ] Un atributo parte de llave primaria de una entidad podra contener valores nulos. 4. [__ ] La seleccin final de llaves primarias es producto del proceso de normalizacin 5. [__ ] Las funciones de agregacin no se pueden utilizar despus del Where en un Query simple. 6. [__ ] En relaciones Muchos a Muchos (n a m) no se requiere cambiar el diseo de la base de datos, ya que es factible de implementar en el nivel fsico. 7. [__ ] Una llave fornea (FK) nace de la existencia de una relacin "1 a n" entre 2 entidades. 8. [__ ] La clave fornea, es aquel atributo o un conjunto de atributos de una relacin cuyos valores coinciden con los valores de la clave primaria de alguna otra relacin 9. [__ ] El lenguaje DDL, Permite la especificar los tipos de datos, de las estructuras y de cualquier restriccin de los datos. 10. [__ ] La restriccin de valores Nulos, tiene que ver con datos incompletos o excepcionales.

5. Desarrolle las siguientes preguntas


CLIENTE -RUT_CLIENTE (pk) -NOMBRE_CLIENTE -CODIGO_COMUNA (fk) FACTURA - NUMERO_FACTURA (pk) - RUT_CLIENTE (fk) - FECHA_EMISION - MONTO - ESTADO

COMUNA - CODIGO_COMUNA (pk) - NOMBRE_COMUNA

LETRA - NUMERO_LETRA (pk) - NUMERO_FACTURA (fk) - RUT_CLIENTE (fk) - FECHAVENCIMIENTO - MONTO - ABONO

Defina el DDL asociado para la creacin de la tabla Cliente y Letra, considerando las restricciones (constraint) correspondientes.

6. Dado el modelo de datos, responda las siguientes preguntas en SQL

El modelo representa la tabla estudiantes (STUDENT) cursos (CLASS) y estudiantes del curso (ENROLLMENT) en la que se relaciona las dos entidades y se almacena el nmero en la lista. 1.- Listar los nombres de los alumnos que tienen la posicin 2 de todas las clases. 2.- Listar el nombre y la edad del alumno con menor edad. 3.- Listar las materias que toman los alumnos con grado SN

7. Se tienen las siguientes tablas: Hospital(cod_hospital, nombre, direccin, fono, rut_director, total_camas) Medico (Rut, nom, app, apm , fono, mail ) La instruccin en lgebra Relacional para Obtener el nombre de Todos los Mdicos que son directores, sera:

a) IIrut_director( Sigma hospital.rut_director = Medico.rut (Hospital b) IIrut_director, nombre(Hospital)


Intersect

Medico) )

IIRut, nom (Medico) )

8. En el Norte de Chile, un grupo de pintores han unido esfuerzos para administrar conjuntamente la venta de sus pinturas. Cada Pintor tiene su propio estilo, y cada pintura es pintada por un nico pintor. Adicionalmente las pinturas tienen asociado un nico estilo. Cada vez que una pintura es terminada, se ingresan los datos de ella en la tabla Pinturas, y se registra su fecha de creacin (cundo se termin), el precio de venta y se deja en blanco la fecha de venta, hasta que esta efectivamente sea vendida. Una vez vendida, se registra la fecha de venta. Sobre el modelo fsico (construido con Power Designer 9 al final del documento) y los datos asociados, conteste lo indicado a continuacin:
a) Listar todos los estilos de cada pintor (un listado con las columnas pintor_nombre y estilo_nombre) select p.Pintor_nombre, e.estilo_nombre from pintor p, estilos e, estilos_pintor ep where p.pintor_codigo = ep.pintor_codigo and ep.estilo_codigo = e.estilo_codigo b) Para cada pintor (pintor_nombre), indicar la cantidad de pinturas que ha pintado select pintor.Pintor_nombre, count(*) as cantidad from pintor, pinturas where pintor.pintor_codigo = pinturas.pintor_codigo group by pintor.pintor_nombre c) Listar todas las pinturas (Pinturas_nombre) del autor BILL MATA. select pinturas.pintura_nombre from pintor, pinturas where pintor.pintor_codigo = pinturas.pintor_codigo and pintor.pintor_nombre = 'BILL MATA' d) Listar todas las pinturas (pinturas_nombre) vendidas del autor BILL MATA. select pinturas.pintura_nombre from pintor, pinturas where pintor.pintor_codigo = pinturas.pintor_codigo and pintor.pintor_nombre = 'BILL MATA' and pinturas.pintura_vendida is not null e) Generar un listado con las siguientes columnas: pintor_nombre, pintura_nombre, pintura_creada, pintura_vendida, dias_demora_vender_pintura select pintor.pintor_nombre, pinturas.pintura_nombre, pinturas.pintura_creada, pinturas.pintura_vendida, (pinturas.pintura_vendida - pinturas.pintura_creada) as dias_demora_vender_pintura from pintor, pinturas where pintor.pintor_codigo = pinturas.pintor_codigo f) Para cada pintor, listar las platas ganadas por cada pintura vendida select pintor.pintor_nombre, SUM(pinturas.PRECIO) AS suma from pintor, pinturas where pintor.pintor_codigo = pinturas.pintor_codigo and pinturas.pintura_vendida is not null group by pintor.pintor_nombre 9

g) Actualizar los valores de las pinturas que estn para la venta (las que an no se venden), en un 10% update pinturas set precio = precio * 1.1 where pintura_vendida is null h) Cul es el valor total recaudado y por recaudar, de las pinturas cuyo estilo es 'POP'? select sum(p.precio) from pinturas p, estilos e where p.estilo_codigo = e.estilo_codigo and e.estilo_nombre = 'POP' and p.pintura_vendida is null union select sum(p.precio) from pinturas p, estilos e where p.estilo_codigo = e.estilo_codigo and e.estilo_nombre = 'POP' and p.pintura_vendida is not null

MODELO FISICO
/*==============================================================*/ /* Table: ESTILOS */ /*==============================================================*/ create table ESTILOS ( ESTILO_CODIGO CHAR(5) not null, ESTILO_NOMBRE VARCHAR(20) not null, ESTILO_DESCRIPCION VARCHAR(50) null, constraint PK_ESTILOS primary key (ESTILO_CODIGO) ); /*==============================================================*/ /* Table: ESTILOS_PINTOR */ /*==============================================================*/ create table ESTILOS_PINTOR ( PINTOR_CODIGO CHAR(5) foreign key references PINTOR (PINTOR_CODIGO), ESTILO_CODIGO CHAR(5) foreign key references ESTILOS (ESTILO_CODIGO), constraint PK_ESTILOS_PINTOR primary key (PINTOR_CODIGO, ESTILO_CODIGO), ); /*==============================================================*/ /* Table: PINTOR */ /*==============================================================*/ create table PINTOR ( PINTOR_CODIGO CHAR(5) not null, PINTOR_NOMBRE VARCHAR(30) not null, constraint PK_PINTOR primary key (PINTOR_CODIGO) ); /*==============================================================*/ /* Table: PINTURAS */ /*==============================================================*/ create table PINTURAS ( PINTURA_CODIGO VARCHAR(5) not null, PINTOR_CODIGO CHAR(5) foreign key references PINTOR (PINTOR_CODIGO), ESTILO_CODIGO CHAR(5) not null, PINTURA_NOMBRE VARCHAR(20) not null, PINTURA_CREADA DATE null, PINTURA_VENDIDA DATE null, PRECIO NUMERIC(6,0) null, constraint PK_PINTURAS primary key (PINTURA_CODIGO), 10

constraint FK_PINTURAS_RELATIONS_ESTILOS foreign key (PINTOR_CODIGO, ESTILO_CODIGO) references ESTILOS_PINTOR (PINTOR_CODIGO, ESTILO_CODIGO) );

11