SlideShare ist ein Scribd-Unternehmen logo
1 von 4
Downloaden Sie, um offline zu lesen
Universidad Técnica Particular de Loja
Base de Datos I
Alumna:MarilynJaramillo
Ing. Juan CarlosMorocho
Desarrollode Ejercicios delCapitulo6
6.10 Cree la tabla Hotel utilizando las características de mejora de la integridad de SQL
 CREATE TABLE Hotel
(
hotelNo varchar2(4) PRIMARYKEY,
hotelName varchar2(30) NOT NULL,
city varchar2(15) NOT NULL
);
6.11 Ahora creelas tablas Room,Booking y Guest utilizandolas características demejora dela
integridad deSQLconlas siguientes restricciones
 Typepuedetenerlossiguientes valores:Single,Doubleo Family.
 Price debeestarcomprendido entre10euros y100 euros.
 roomNo debeestarcomprendidoentre1y 100.
 dateFrom ydateTo debensermayores quelafechaactual.
 no sepuedereservardosveces enuna mismahabitación.
 Un mismo huéspedno puedetenerreservas quesesolapen.
 CREATE TABLE Room
(
roomNo number(3) CHECK(roomNo BETWEEN1AND 100),
hotelNo varchar2(4) NOT NULL,
type varchar2(15) NOT NULL CHECK(typeIN('Single','Double','Family')),
price number(8,2) NOT NULL CHECK(priceBETWEEN10AND 100),
CONSTRAINT roomNo_PK PRIMARYKEY(roomNo),
CONSTRAINT hotelNo_FK FOREIGNKEY(hotelNo)referenceHotel(hotelNo),
);
 CREATE TABLE Booking
(
hotelNo varchar2(4) NOT NULL,
guestNo number(3) NOT NULL,
dateFrom DATE NOT NULL CHECK(dateFrom<dateTo),
dateTo DATE NOT NULL CHECK(dateTo >dateFrom),
roomNo number(3) NOT NULL UNIQUE,
CONSTRAINT Booking_PK PRIMARYKEY(hotelNo,guestNo,roomNo),
CONSTRAINT hotel_FK FOREIGNKEY(hotelNo)referenceHotel(hotelNo),
CONSTRAINT guest_FK FOREIGNKEY(guestNo) referenceGuest(guestNo),
CONSTRAINT room_FK FOREIGNKEY(roomNo) referenceRoom(roomNo),
);
 CREATE TABLE Guest
(
guestNo number(3) PRIMARYKEY,
guestName varchar2(30) NOT NULL,
guestAddress varchar2(30) NOT NULL
);
6.12 Cree una tabla separadaconla misma estructuraquela tabla Bookingpara almacenarlos
registros antiguos.Utilizandola instrucciónINSERT,copielos registros dela tabla Booking a la
tabla de archivo,traspasandoúnicamentelas reservas anteriores al1 deenero de 2003.Borre
todas las reservas anteriores al1 deenero de 2003 dela tabla Booking.
 CREATE TABLE Reg_Antiguos
(
hotelNo varchar2(4) NOT NULL,
guestNo number(3) NOT NULL,
dateFrom DATE NOT NULL CHECK(dateFrom<dateTo),
dateTo DATE NOT NULL CHECK(dateTo >dateFrom),
roomNo number(3) NOT NULL UNIQUE,
CONSTRAINT Booking_PK PRIMARYKEY(hotelNo,guestNo,roomNo),
CONSTRAINT hotel_FK FOREIGNKEY(hotelNo)referenceHotel(hotelNo),
CONSTRAINT guest_FK FOREIGNKEY(guestNo) referenceGuest(guestNo),
CONSTRAINT room_FK FOREIGNKEY(roomNo) referenceRoom(roomNo),
);
INSERT INTO Reg_Antiguos
SELECT *
FROM Bookingb
WHERE b.dateTo <'1de enero de2003';
DELETE FROM Booking
WHERE dateTo <''1deenero de 2003';
6.13 Cree una vista quecontenga el nombredel hotel y los nombres delos huéspedes albergados
en el hotel.
CREATE VIEWVista(hotelName,guestName)
AS SELECT h.hotelName,g.guestName
FROMBookingb, Guestg, Hotelh
WHERE b.hotelNo =h.hotelNo AND b.guestNo=g.guestNo;
6.14 Cree una vista quecontenga la cuenta correspondientea cada huésped delGrovenorHotel.
CREATE VIEWCuenta(Cuenta,Cliente)
AS SELECT ((b.dateTo – b.dateFrom)*r.price),g.guestName
FROMBookingb, Guestg, Roomr
WHERE b.roomNo =r.roomNo AND b.guestNo=g.guestNo;
6.15 Proporcionea los usuariosManagery Directoraccesocompletoa estas vistas,conel
privilegiodepasarelaccesoa otros usuarios.
GRANT SELECT,UPDATE,DELETE,INSERT
ON Vista
TO Manager,Director
WHIT GRANT OPTION;
GRANT SELECT,UPDATE,DELETE,INSERT
ON Cuenta
TO Manager,Director
WHIT GRANT OPTION;
6.16 ProporcionealusuarioAccounts accesodetipoSELECTa estas vistas.Ahora revoqueel
accesodeese usuario.
GRANT SELECT
ON Vista
TO Accounts;
REVOKE SELECT
ON Vista
FROMAccounts;
GRANT SELECT
ON Cuenta
TO Accounts;
REVOKE SELECT
ON Cuenta
FROMAccounts;
6.17 Considerela siguientevista definida sobreelesquema Hotel:
CREATE VIEWHotelBookingCount( hotelNo,bookingCount)
AS SELECT h.hotelNo,COUNT (*)
FROMHotelh, Roomr, Bookingb
WHERE h.hotelNo =r.hotelNo AND r.roomNo =b.roomNo
GROUP BY h.hotelNo;
Para cada una delas siguientes consultas indiquesi la consulta es valida y,en casodeque lo que
sea, muestrecomose establecería la correspondencia entrela consulta y la respectiva consulta
sobrelas tablas basesubyacentes.
SELECT *
FROM HotelBookingCount;
Verdadero
SELECT h.hotelNo,COUNT (*)
FROM Hotelh, Roomr, Bookingb
WHERE h.hotelNo =r.hotelNo AND r.roomNo =b.roomNo
GROUP BY h.hotelNo;
SELECT hotelNo
WHERE hotelNo =‘H001’;
Verdadero
SELECT hotelNo
FROM Hotel
WHERE hotelNo ='H001';
SELECT MIN(bookingCount)
FROM HotelBookingCount;
Falso
SELECT COUNT(*)
FROM HotelBookingCount;
Falso
SELECT hotelNo
FROM HotelBookingCount
WHERE bookingCount>1000;
Verdadero
SELECT h.hotelNo,COUNT (*)
FROM Hotelh, Roomr, Bookingb
WHERE h.hotelNo =r.hotelNo AND r.roomNo =b.roomNo
GROUP BY h.hotelNo;
HAVING COUNT (*) > 1000
SELECT hotelNo
FROM HotelBookingCount
ORDER BY bookingCount;
Falso

Weitere ähnliche Inhalte

Mehr von Marilyn Jaramillo (20)

simulación OSI
simulación OSIsimulación OSI
simulación OSI
 
Capa transporte
Capa transporteCapa transporte
Capa transporte
 
Informe
InformeInforme
Informe
 
Mineria de datos secuenciales
Mineria de datos secuencialesMineria de datos secuenciales
Mineria de datos secuenciales
 
Lesiones sistémicas por calor
Lesiones sistémicas por calorLesiones sistémicas por calor
Lesiones sistémicas por calor
 
Modelo conceptual de BD
Modelo conceptual de BDModelo conceptual de BD
Modelo conceptual de BD
 
caso de DreamHome BD
caso de DreamHome BDcaso de DreamHome BD
caso de DreamHome BD
 
Deber base
Deber baseDeber base
Deber base
 
Modelo Entidad-Relacion 2
Modelo Entidad-Relacion 2Modelo Entidad-Relacion 2
Modelo Entidad-Relacion 2
 
Ensayo sociedad de la infromacion
Ensayo sociedad de la infromacionEnsayo sociedad de la infromacion
Ensayo sociedad de la infromacion
 
Lesiones SistéMicas Por Calor
Lesiones SistéMicas Por CalorLesiones SistéMicas Por Calor
Lesiones SistéMicas Por Calor
 
Mineria De Datos Secuenciales
Mineria De Datos SecuencialesMineria De Datos Secuenciales
Mineria De Datos Secuenciales
 
DescripcióN Del Producto
DescripcióN Del ProductoDescripcióN Del Producto
DescripcióN Del Producto
 
Capitulo 19 Modelado De DiseñO
Capitulo 19 Modelado De DiseñOCapitulo 19 Modelado De DiseñO
Capitulo 19 Modelado De DiseñO
 
open innovation y ventajas GC
open innovation y ventajas  GCopen innovation y ventajas  GC
open innovation y ventajas GC
 
Colas
ColasColas
Colas
 
Casos De Uso
Casos De UsoCasos De Uso
Casos De Uso
 
Diferencia Entre Novio Y Amigo
Diferencia Entre Novio Y AmigoDiferencia Entre Novio Y Amigo
Diferencia Entre Novio Y Amigo
 
Presentacion Casos De Uso1
Presentacion Casos De Uso1Presentacion Casos De Uso1
Presentacion Casos De Uso1
 
Simulacion de la Diabetes
Simulacion de la DiabetesSimulacion de la Diabetes
Simulacion de la Diabetes
 

Ejercicios capitulo 6

  • 1. Universidad Técnica Particular de Loja Base de Datos I Alumna:MarilynJaramillo Ing. Juan CarlosMorocho Desarrollode Ejercicios delCapitulo6 6.10 Cree la tabla Hotel utilizando las características de mejora de la integridad de SQL  CREATE TABLE Hotel ( hotelNo varchar2(4) PRIMARYKEY, hotelName varchar2(30) NOT NULL, city varchar2(15) NOT NULL ); 6.11 Ahora creelas tablas Room,Booking y Guest utilizandolas características demejora dela integridad deSQLconlas siguientes restricciones  Typepuedetenerlossiguientes valores:Single,Doubleo Family.  Price debeestarcomprendido entre10euros y100 euros.  roomNo debeestarcomprendidoentre1y 100.  dateFrom ydateTo debensermayores quelafechaactual.  no sepuedereservardosveces enuna mismahabitación.  Un mismo huéspedno puedetenerreservas quesesolapen.  CREATE TABLE Room ( roomNo number(3) CHECK(roomNo BETWEEN1AND 100), hotelNo varchar2(4) NOT NULL, type varchar2(15) NOT NULL CHECK(typeIN('Single','Double','Family')), price number(8,2) NOT NULL CHECK(priceBETWEEN10AND 100), CONSTRAINT roomNo_PK PRIMARYKEY(roomNo), CONSTRAINT hotelNo_FK FOREIGNKEY(hotelNo)referenceHotel(hotelNo), );  CREATE TABLE Booking ( hotelNo varchar2(4) NOT NULL, guestNo number(3) NOT NULL, dateFrom DATE NOT NULL CHECK(dateFrom<dateTo), dateTo DATE NOT NULL CHECK(dateTo >dateFrom), roomNo number(3) NOT NULL UNIQUE, CONSTRAINT Booking_PK PRIMARYKEY(hotelNo,guestNo,roomNo), CONSTRAINT hotel_FK FOREIGNKEY(hotelNo)referenceHotel(hotelNo), CONSTRAINT guest_FK FOREIGNKEY(guestNo) referenceGuest(guestNo), CONSTRAINT room_FK FOREIGNKEY(roomNo) referenceRoom(roomNo), );
  • 2.  CREATE TABLE Guest ( guestNo number(3) PRIMARYKEY, guestName varchar2(30) NOT NULL, guestAddress varchar2(30) NOT NULL ); 6.12 Cree una tabla separadaconla misma estructuraquela tabla Bookingpara almacenarlos registros antiguos.Utilizandola instrucciónINSERT,copielos registros dela tabla Booking a la tabla de archivo,traspasandoúnicamentelas reservas anteriores al1 deenero de 2003.Borre todas las reservas anteriores al1 deenero de 2003 dela tabla Booking.  CREATE TABLE Reg_Antiguos ( hotelNo varchar2(4) NOT NULL, guestNo number(3) NOT NULL, dateFrom DATE NOT NULL CHECK(dateFrom<dateTo), dateTo DATE NOT NULL CHECK(dateTo >dateFrom), roomNo number(3) NOT NULL UNIQUE, CONSTRAINT Booking_PK PRIMARYKEY(hotelNo,guestNo,roomNo), CONSTRAINT hotel_FK FOREIGNKEY(hotelNo)referenceHotel(hotelNo), CONSTRAINT guest_FK FOREIGNKEY(guestNo) referenceGuest(guestNo), CONSTRAINT room_FK FOREIGNKEY(roomNo) referenceRoom(roomNo), ); INSERT INTO Reg_Antiguos SELECT * FROM Bookingb WHERE b.dateTo <'1de enero de2003'; DELETE FROM Booking WHERE dateTo <''1deenero de 2003'; 6.13 Cree una vista quecontenga el nombredel hotel y los nombres delos huéspedes albergados en el hotel. CREATE VIEWVista(hotelName,guestName) AS SELECT h.hotelName,g.guestName FROMBookingb, Guestg, Hotelh WHERE b.hotelNo =h.hotelNo AND b.guestNo=g.guestNo; 6.14 Cree una vista quecontenga la cuenta correspondientea cada huésped delGrovenorHotel. CREATE VIEWCuenta(Cuenta,Cliente) AS SELECT ((b.dateTo – b.dateFrom)*r.price),g.guestName FROMBookingb, Guestg, Roomr WHERE b.roomNo =r.roomNo AND b.guestNo=g.guestNo; 6.15 Proporcionea los usuariosManagery Directoraccesocompletoa estas vistas,conel privilegiodepasarelaccesoa otros usuarios. GRANT SELECT,UPDATE,DELETE,INSERT ON Vista TO Manager,Director WHIT GRANT OPTION; GRANT SELECT,UPDATE,DELETE,INSERT
  • 3. ON Cuenta TO Manager,Director WHIT GRANT OPTION; 6.16 ProporcionealusuarioAccounts accesodetipoSELECTa estas vistas.Ahora revoqueel accesodeese usuario. GRANT SELECT ON Vista TO Accounts; REVOKE SELECT ON Vista FROMAccounts; GRANT SELECT ON Cuenta TO Accounts; REVOKE SELECT ON Cuenta FROMAccounts; 6.17 Considerela siguientevista definida sobreelesquema Hotel: CREATE VIEWHotelBookingCount( hotelNo,bookingCount) AS SELECT h.hotelNo,COUNT (*) FROMHotelh, Roomr, Bookingb WHERE h.hotelNo =r.hotelNo AND r.roomNo =b.roomNo GROUP BY h.hotelNo; Para cada una delas siguientes consultas indiquesi la consulta es valida y,en casodeque lo que sea, muestrecomose establecería la correspondencia entrela consulta y la respectiva consulta sobrelas tablas basesubyacentes. SELECT * FROM HotelBookingCount; Verdadero SELECT h.hotelNo,COUNT (*) FROM Hotelh, Roomr, Bookingb WHERE h.hotelNo =r.hotelNo AND r.roomNo =b.roomNo GROUP BY h.hotelNo; SELECT hotelNo WHERE hotelNo =‘H001’; Verdadero SELECT hotelNo FROM Hotel WHERE hotelNo ='H001'; SELECT MIN(bookingCount) FROM HotelBookingCount;
  • 4. Falso SELECT COUNT(*) FROM HotelBookingCount; Falso SELECT hotelNo FROM HotelBookingCount WHERE bookingCount>1000; Verdadero SELECT h.hotelNo,COUNT (*) FROM Hotelh, Roomr, Bookingb WHERE h.hotelNo =r.hotelNo AND r.roomNo =b.roomNo GROUP BY h.hotelNo; HAVING COUNT (*) > 1000 SELECT hotelNo FROM HotelBookingCount ORDER BY bookingCount; Falso