Anteprima
Vedrai una selezione di 3 pagine su 7
Implementazione in Oracle Pag. 1 Implementazione in Oracle Pag. 2
Anteprima di 3 pagg. su 7.
Scarica il documento per vederlo tutto.
Implementazione in Oracle Pag. 6
1 su 7
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Formattazione del testo

GRANT CONNECT, SELECT ANY TABLE TO voli_user;

Si noti che mentre per l'utente si sogno assegnati singolarmente i privilegi necessari (ossia quello di connessione al database e di interrogazione delle tabelle) per l'utente si è utilizzato per comodità il ruolo dba, che incorpora i privilegi di connessione, interrogazione, creazione tabelle, creazione viste... voli;

Inoltre, si è assegnato all'utente amministratore una quota illimitata sul tablespace. Questo significa che potrebbe, potenzialmente, saturarlo.

In condizioni reali, è opportuno assegnare a ogni utente solo una quota limitata, esprimendola in kilo o megabyte.

3. Creazione delle tabelle

Prima di procedere alla creazione delle tabelle, bisogna disconnettersi e rieseguire il login con le credenziali appena indicate per l'utente voli_dba. Infatti, l'utente con il quale si è attualmente autenticati è da utilizzarsi solo per operazioni di sistema.

di mantenimento e il suo tablespace, contiene tabelle generate in automatico dal DMBS che è buona norma tenere separate dalle proprie.

La struttura del database alla quale si è pervenuti è la seguente:

VOLI Codice PRENOTAZIONI Codice aeroporto di partenza Cognome Codice aeroporto di arrivo Nome Durata Codice volo Ora partenza
AEROPORTI Posto Ora imbarco Codice Classe Gate Nome Seating

Si è utilizzata la convenzione di sottolineare gli attributi che costituiscono la chiave primaria della relazione, e di evidenziare i vincoli di chiave esterna mediante una freccia che punta dall'attributo referente a quello riferito.

Tuttavia queste informazioni preliminari non sono ancora sufficienti; la traduzione di tale schema in DDL richiede:

  1. La definizione dei tipi di dati degli attributi (Il codice dell'aeroporto sarà, ad esempio, un valore alfanumerico di 3 caratteri, mentre il nome di un cliente può essere una stringa di lunghezza variabile)
  2. ...
L'imposizione di eventuali vincoli di dominio (Se la durata è espressa in minuti, chiaramente non avranno senso valori negativi per il campo; similmente, ci si aspetta che ogni aeroporto abbia un nome è che dunque il campo Nome sia NOT NULL) 3. L'individuazione dei comportamenti da attuare in risposta a eventuali cancellazioni (Se un aeroporto dovesse essere disgraziatamente abbattuto, ci si aspetta che la tupla relativa sia eliminata dalla tabella aeroporti e che tutti i voli associati a tale aeroporto siano annullati, dunque eliminati in cascata. Se invece ad essere cancellato è un volo, sarà opportuno non eliminare tutte le voci relative ai clienti che avevano prenotato un biglietto, ma settare il campo Codice volo ad un valore di default, in modo da poter reperire i dati per un eventuale rimborso) L'implementazione in DDL seguente tiene conto di tutti gli accorgimenti indicati: ```html

L'imposizione di eventuali vincoli di dominio (Se la durata è espressa in minuti, chiaramente non avranno senso valori negativi per il campo; similmente, ci si aspetta che ogni aeroporto abbia un nome è che dunque il campo Nome sia NOT NULL)

3. L'individuazione dei comportamenti da attuare in risposta a eventuali cancellazioni (Se un aeroporto dovesse essere disgraziatamente abbattuto, ci si aspetta che la tupla relativa sia eliminata dalla tabella aeroporti e che tutti i voli associati a tale aeroporto siano annullati, dunque eliminati in cascata. Se invece ad essere cancellato è un volo, sarà opportuno non eliminare tutte le voci relative ai clienti che avevano prenotato un biglietto, ma settare il campo Codice volo ad un valore di default, in modo da poter reperire i dati per un eventuale rimborso)

L'implementazione in DDL seguente tiene conto di tutti gli accorgimenti indicati:

CREATE TABLE voli (
  codice VARCHAR (10),
  codaerpart VARCHAR (3) NOT NULL,
  ...
);
```
CREATE TABLE voli (
    codice VARCHAR (10) PRIMARY KEY,
    codaerpart VARCHAR (3) NOT NULL,
    codaerarr VARCHAR (3) NOT NULL,
    durata NUMBER,
    orapartenza DATE,
    oraimbarco DATE,
    gate VARCHAR (5),
    CONSTRAINT fk_voli_aeroporti_1 FOREIGN KEY (codaerpart) REFERENCES aeroporti (cod) ON DELETE CASCADE,
    CONSTRAINT fk_voli_aeroporti_2 FOREIGN KEY (codaerarr) REFERENCES aeroporti (cod) ON DELETE CASCADE
);

CREATE TABLE aeroporti (
    cod VARCHAR (3) PRIMARY KEY,
    nome VARCHAR (50) NOT NULL
);

CREATE TABLE prenotazioni (
    cognome VARCHAR (50),
    nome VARCHAR (50),
    codvolo VARCHAR (10),
    posto VARCHAR (5),
    classe VARCHAR (10),
    seating NUMBER,
    CONSTRAINT pk_prenotazioni PRIMARY KEY (cognome, nome, codvolo),
    CONSTRAINT fk_prenotazioni_voli FOREIGN KEY (codvolo) REFERENCES voli (codice)
    /*ON DELETE SET DEFAULT – non implementato in Oracle-*/
);

L'accorgimento ha soltanto lo scopo di poter indicare un nome per il vincolo rendendo più semplice l'interpretazione dei messaggi di errore in caso di violazioni, per la chiave esterna questo accorgimento permette di semplificare la fase di creazione delle tabelle: infatti costruendole senza vincoli di relazione e indicandoli in ALTER TABLE seguito tramite ON DELETE SET DEFAULT non è necessario alcun accorgimento particolare sull'ordine in cui le tabelle vengono create.

Il testo tra /* e */ è un commento: la politica di cancellazione non è infatti al momento implementata in Oracle. Talvolta è possibile utilizzare in sua vece ON DELETE SET NULL, ma in questo caso trattandosi di un attributo della chiave primaria non è possibile settarlo NULL.

5

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

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher cecilialll 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 Moscato Vincenzo.