Vous êtes sur la page 1sur 2

Universidad Andrs Bello Facultad de Ingeniera Escuela de Informtica

Santiago, 25 de Noviembre del 2010

Pauta Segunda Prueba Solemne Modelamiento de Datos


Profesor: Claudio Carmona

Dado el siguiente modelo relacional, construya las instrucciones SQL para: 1. R. Nombre y actividad de las actividades que se realizan en el alojamiento denominado La Huerta. (17 ptos.) SELECT A.Nombre_Actividad, A.Descripcion FROM Actividad A, Realiza_Actividad B WHERE Nombre_Aloja = La Huerta AND A. Codigo_Actividad = B. Codigo_Actividad; Nombre de los alojamientos que tienen habitaciones dobles (d) y realizan actividades de Senderismo. (17 ptos.) SELECT DISTINCT B.Nombre_Aloja FROM Actividad A, Realiza_Actividad B, Habitacin C WHERE A.Nombre_Actividad = Senderismo AND C.Tipo = d AND A.Codigo_Actividad = B.Codigo_Actividad AND B.Nombre_Aloja = C.Nombre_Aloja; Nmero de habitaciones ocupadas y recaudacin (suma de los precios de las habitaciones) total por tipo de habitacin. (17 ptos.) SELECT Tipo, Count(*) as Numero_Habitaciones, Count(*)*Precio as Recaudacin FROM Habitacin GROUP BY Tipo Nombre de la actividad y nmero de participantes, de la actividad con mayor nmero de participantes. (17 ptos.) SELECT A.Nombre_Actividad, max(sum(C.N_Habita)) FROM Actividad A, Realiza_Actividad B, Habitacin C WHERE A.Codigo_Actividad = B.Codigo_Actividad AND B.Nombre_Aloja = C.Nombre_Aloja GROUP BY A.Nombre_Actividad Alojamientos y nmero de alojados por alojamiento (Ejemplo: 10 alojados en La Huerta), para aquellos alojamientos con diez o ms alojados. (17 ptos.) SELECT A.Nombre_Aloja, sum(B.N_Habita) as Numero_Alojados FROM Alojamiento A, Habitacin B WHERE A.Nombre_Aloja = B.Nombre_Aloja AND (SELECT sum(N_Habita) FROM Alojamiento) >= 10 GROUP BY A.Nombre_Aloja;

2. R.

3. R.

4. R.

5. R.

6.

Nombre del personal de contacto y cantidad de alojados que atiende. (15 ptos.)

R.

SELECT A.Nombre_P, sum(B.N_Habita) FROM Alojamiento A, Personal B, Habitacin C WHERE A.Contacto = B.Codigo_P AND A.Nombre_Aloja = C.Nombre_Aloja GROUP BY A.Nombre_P

CREATE TABLE Alojamiento( Nombre_Aloja CHAR(30), Direccion CHAR(25) NOT NULL, Telefono CHAR(9) NOT NULL, Contacto CHAR(3), Numero_Habita INTEGER NOT NULL, PRIMARY KEY(Nombre_Aloja), FOREIGN KEY (Contacto) REFERENCES Personal (Codigo_P) ); CREATE TABLE Personal( Codigo_P CHAR(3), Nombre_P CHAR(30) NOT NULL, Direccion CHAR(25) NOT NULL, RUT CHAR(10) NOT NULL, Nombre_Aloja CHAR(30), PRIMARY KEY (Codigo_P), FOREIGN KEY (Nombre_Aloja) REFERENCES Alojamiento (Nombre_Aloja), UNIQUE(RUT) ); CREATE TABLE Habitacin( Nombre_Aloja CHAR(30), N_Habita INTEGER(3), Tipo CHAR(1) NOT NULL, Bao CHAR(2), Precio INTEGER, PRIMARY KEY (Nombre_Aloja, N_Habita), FOREIGN KEY (Nombre_Aloja) REFERENCES Alojamiento (Nombre_Aloja) ); CREATE TABLE Actividad( Codigo_Actividad CHAR(3), Nombre_Actividad CHAR(30) NOT NULL, Descripcion CHAR(50) NOT NULL, Nivel CHAR(2) NOT NULL, PRIMARY KEY (Codigo_Actividad), CHECK (Nivel BETWEEN 1 AND 0) ); CREATE TABLE Realiza_Actividad( Codigo_Actividad CHAR(3), Nombre_Aloja CHAR(30), Dia_Semana CHAR(10), PRIMARY KEY (Codigo_Actividad, Nombre_Aloja), FOREIGN KEY (Nombre_Aloja) REFERENCES Alojamiento (Nombre_Aloja), FOREIGN KEY (Codigo_Actividad) REFERENCES Actividad (Codigo Actividad) );

Vous aimerez peut-être aussi