Anteprima
Vedrai una selezione di 6 pagine su 21
Basi di Dati – Progetto Catena alberghi Pag. 1 Basi di Dati – Progetto Catena alberghi Pag. 2
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Basi di Dati – Progetto Catena alberghi Pag. 6
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Basi di Dati – Progetto Catena alberghi Pag. 11
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Basi di Dati – Progetto Catena alberghi Pag. 16
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Basi di Dati – Progetto Catena alberghi Pag. 21
1 su 21
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

LOGGING, PARTITION "CAMERA_P2" VALUES LESS THAN (30) TABLESPACE "USERS" PCTFREE 20 PCTUSED 0 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 80K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0)

LOGGING, PARTITION "CAMERA_P3" VALUES LESS THAN (45) TABLESPACE "USERS" PCTFREE 20 PCTUSED 0 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 80K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0)

LOGGING, PARTITION "CAMERA_P4" VALUES LESS THAN (60) TABLESPACE "USERS" PCTFREE 20 PCTUSED 0 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 80K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0)

LOGGING, PARTITION "CAMERA_P5" VALUES LESS THAN (75) TABLESPACE "USERS" PCTFREE 20 PCTUSED 0 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 80K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0)

LOGGING, PARTITION "CAMERA_P6" VALUES LESS THAN (90) TABLESPACE "USERS" PCTFREE 20 PCTUSED 0 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 80K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0)

0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) LOGGING, PARTITION "CAMERA_P7" VALUES LESS THAN (105) TABLESPACE "USERS" PCTFREE 20 PCTUSED 0 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 80K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) LOGGING, PARTITION "CAMERA_P8" VALUES LESS THAN (120) TABLESPACE "USERS" PCTFREE 20 PCTUSED 0 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 80K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) LOGGING, PARTITION "CAMERA_P9" VALUES LESS THAN (135) TABLESPACE "USERS" PCTFREE 20 PCTUSED 0 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 80K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) LOGGING, PARTITION "CAMERA_P10" VALUES LESS THAN (150) TABLESPACE "USERS" PCTFREE 20 PCTUSED 0 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 80K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) LOGGING)****box***CREATE TABLE "BOX" ("ALBERGO" NUMBER(10) NOT
NULL,"NUMERO" NUMBER(10) NOT NULL, "UBICAZIONE" VARCHAR2(20 byte) NOT NULL, "TIPO" NUMBER(1) NOT NULL, "DIMENSIONE" NUMBER(10) NOT NULL,
CONSTRAINT "BOOL_BOX" CHECK(tipo=0 or tipo=1),
CONSTRAINT "FK_BOX_ALBERGO" FOREIGN KEY("ALBERGO") REFERENCES "ALBERGO"("ID"),
CONSTRAINT "PK_BOX" PRIMARY KEY("ALBERGO", "NUMERO"))
TABLESPACE "USERS" PCTFREE 5 PCTUSED 0 INITRANS 2 MAXTRANS 255
STORAGE ( INITIAL 48K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0)
LOGGING
****Cliente***
Le tabelle create di seguito hanno una crescita considerevole nel tempo, quindi i tablespace cresceranno notevolmente. Quello della tabella cliente ha una crescita minore rispetto agli altri perché sono previsti clienti fedeli.

CREATE TABLE "CLIENTE" (
"CI" VARCHAR2(10 byte) NOT NULL,
"NOME" VARCHAR2(20 byte) NOT NULL,
"COGNOME" VARCHAR2(20 byte) NOT NULL,
"DATA_NASCITA" DATE NOT NULL,
"RESIDENZA" VARCHAR2(40 byte) NOT NULL,
CONSTRAINT "SYS_C003635" PRIMARY KEY("CI") USING INDEX TABLESPACE "USERS" STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) PCTFREE 10 INITRANS 2 MAXTRANS 255) TABLESPACE "USERS" PCTFREE 10 PCTUSED 0 INITRANS 1 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) LOGGING

*** Prenotazioni ***

Si è creato una sequenza per incrementare automaticamente il valore id della tabella prenotazione.

CREATE SEQUENCE "CATENAALBEGHI"."CONT_PREN" INCREMENT BY 1 START WITH 21 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE CACHE 20 NOORDER
CREATE TABLE "PRENOTAZIONE" (
"ID" NUMBER(10) NOT NULL,
"CLIENTE" VARCHAR2(10 byte) NOT NULL,
"ALBERGO" NUMBER(10) NOT NULL,
"CAMERA" NUMBER(10) NOT NULL,
"NUM_BOX" NUMBER(10) NOT NULL,
"DATA_ARRIVO" DATE
Il testo formattato con i tag HTML corretti sarebbe il seguente:
<NOT NULL>, &quot;DATA_PARTENZA&quot; DATE NOT NULL,
CONSTRAINT &quot;CK_DATE_PRENOTAZIONI&quot; CHECK(data_arrivo < data_partenza),
CONSTRAINT &quot;FK_PRENOTAZIONE_CAMERA&quot; FOREIGN KEY(&quot;CAMERA&quot;,&quot;ALBERGO&quot;) REFERENCES &quot;CAMERA&quot;(&quot;NUMERO&quot;, &quot;ALBERGO&quot;),
CONSTRAINT &quot;FK_PRENOTAZIONE_CLIENTE&quot; FOREIGN KEY(&quot;CLIENTE&quot;) REFERENCES &quot;CLIENTE&quot;(&quot;CI&quot;),
CONSTRAINT &quot;PK_PRENOTAZIONE&quot; PRIMARY KEY(&quot;ID&quot;) USING INDEX TABLESPACE &quot;USERS&quot; STORAGE (INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) PCTFREE 10 INITRANS 2 MAXTRANS 255) TABLESPACE &quot;USERS&quot; PCTFREE 5 PCTUSED 0 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 808K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) LOGGING
****Occupazione***
CREATE TABLE &quot;OCCUPAZIONE&quot; (&quot;ALBERGO&quot; NUMBER(10) NOT NULL, &quot;CAMERA&quot; NUMBER(10) NOT NULL, &quot;DATA_ARRIVO&quot; DATE NOT NULL, &quot;DATA_PARTENZA&quot;
CREATE TABLE OCCUPAZIONE ( DATA_ARRIVO DATE NOT NULL, BOX_ASSOCIATO NUMBER(10) NOT NULL, CLIENTE VARCHAR2(10 byte) NOT NULL, CONSTRAINT FK_CLIENTE FOREIGN KEY(CLIENTE) REFERENCES CLIENTE(CI), CONSTRAINT FK_OCC_BOX FOREIGN KEY(ALBERGO, BOX_ASSOCIATO) REFERENCES BOX(ALBERGO, NUMERO), CONSTRAINT FK_OCC_CAMERA FOREIGN KEY(CAMERA, ALBERGO) REFERENCES CAMERA(NUMERO, ALBERGO), CONSTRAINT PK_OCCUPAZIONE PRIMARY KEY(ALBERGO, CAMERA, DATA_ARRIVO) USING INDEX TABLESPACE USERS STORAGE (INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) PCTFREE 10 INITRANS 2 MAXTRANS 255) TABLESPACE USERS PCTFREE 10 PCTUSED 0 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 1400K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) LOGGING ); "ASSOCIAZIONE" ( "BOX" NUMBER(10) NOT NULL, "ALBERGO" NUMBER(10) NOT NULL, "CAMERA" NUMBER(10) NOT NULL, "DATA_INIZIO" DATE NOT NULL, "DATA_FINE" DATE NOT NULL, CONSTRAINT "FK_ASS_BOX" FOREIGN KEY("ALBERGO", "BOX") REFERENCES "BOX"("ALBERGO", "NUMERO"), CONSTRAINT "FK_ASS_CAMERA" FOREIGN KEY("CAMERA", "ALBERGO") REFERENCES "CAMERA"("NUMERO", "ALBERGO"), CONSTRAINT "PK_ASSOCIAZIONE" PRIMARY KEY("BOX", "ALBERGO", "CAMERA", "DATA_INIZIO") USING INDEX TABLESPACE "USERS" STORAGE (INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) PCTFREE 10 INITRANS 2 MAXTRANS 255) TABLESPACE "USERS" PCTFREE 10 PCTUSED 0 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 48K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) LOGGING
<create or replace procedure ins_cliente(n in cliente.nome %type, -- nome cliente
c in cliente.cognome %type, -- cognome cliente
carta in cliente.ci %type, -- numero carta di identità
nascita in cliente.data_nascita %type, -- data di nascita
indirizzo in cliente.residenza %type -- residenza del cliente) is
begin
declare
presente number(5);
begin
-- controlla se il cliente è già memorizzato
select count(*) into presente from cliente where ci=carta;
if presente=0 then
-- inserisce i dati del cliente nel db
insert into cliente values(carta,n,c,nascita,indirizzo);
commit;
end if;
end;
end ins_cliente;
<create or replace trigger cancella_cliente
before delete on prenotazione
for each row
declare
cliente_presente number(5);
begin
-- controlla se il cliente ha prenotato e poi disdetto una camera
select count(*) into cliente_presente from prenotazione where cliente_id=:old.cliente_id;
if cliente_presente=0 then
-- cancella il cliente dalla tabella cliente
delete from cliente where cliente_id=:old.cliente_id;
end if;
end;
/
```html

mai occupato una stanza e non hanno una prenotazione, li copia in un cursore tramite il quale identifica i clienti da cancellare :

create or replace trigger del_cliente
after delete on prenotazione
for each row
declare
cli cliente.ci %type;
-- creazione del cursore
cursor cliente_as is
select c.ci from cliente c, occupazione o prenotazione p where
c.ci!=o.cliente and c.ci!=p.cliente;
begin
-- apertura del cursore
open cliente_as;
fetch cliente_as into cli;
while cliente_as %notfound
loop
-- cancellazione del cliente
delete from cliente where ci=cli;
fetch cliente_as into cli;
end loop;
--chiusura del cursore
close cliente_as;
commit;
end;

Operazioni O3

Di seguito sono rappresentate sia le procedure di controllo che la procedura di inserimento.

Quando un cliente chiede di prenotare una camera, un responsabile dell'albergo controlla se ci sono camere e box liberi per il periodo e del tipo richiesto.

La camera è controllata dalla funzione disp() che utilizza una query innestata che interroga le tabelle camera,

``` <create or replace function disp(nome_alb in albergo.nome %type, -- nome albergo loc in albergo.localita %type, -- località albergo tip in camera.tipo %type, -- tipo di camera richiesta arrivo in prenotazione.data_arrivo %type, -- data arrivo partenza in prenotazione.data_partenza %type) -- data partenza return varchar2> is begin declare libero varchar2(100); cam camera.numero %type; alb camera.albergo %type; cursor cur is select c.numero, c.albergo from camera c inner join albergo a on c.albergo=a.id where a.nome=nome_alb and a.localita=loc and c.tipo=tip and c.numero<> ALL(select camera from prenotazione p where p.data_arrivo<=partenza and p.data_partenza>=arrivo); begin open cur; loop fetch cur into cam,alb; exit when cur Il tuo compito è formattare il testo fornito utilizzando tag html. ATTENZIONE: non modificare il testo in altro modo, NON aggiungere commenti, NON utilizzare tag h1; Ecco il testo formattato utilizzando tag html:

%notfound;libero:=libero||to_char(cam)||' '||to_char(alb);end loop;close cur;--restituis

Dettagli
Publisher
A.A. 2012-2013
21 pagine
1 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Sara F di informazioni apprese con la frequenza delle lezioni di Basi di Dati e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Napoli Federico II o del prof Chianese Angelo.