La creazione dello schema in SQL

Vengono riportati gli script SQL per la creazione della base di dati:

CREATE TABLE CLIENTE(
CF_PIVA CHAR(16) PRIMARY KEY,
DESCRIZIONE CHAR(50) NOT NULL,
INDIRIZZO CHAR(100) NOT NULL,
COMUNE CHAR(50) NOT NULL REFERENCES LOCALITA(COMUNE))

CREATE TABLE LOCALITA(
COMUNE CHAR(50) PRIMARY KEY,
CITTA CHAR(50) NOT NULL,
PROVINCIA CHAR(50) NOT NULL,
REGIONE CHAR(50) NOT NULL)

CREATE TABLE NOLEGGIO(
CLIENTE CHAR(16) REFERENCES CLIENTE(CF_PIVA),
DISTRIBUTORE CHAR(10) REFERENCES DISTRIBUTORE(MATRICOLA),
CANONE INTEGER NOT NULL,
DATA DATE DEFAULT SYSDATE,
PRIMARY KEY(CLIENTE,DISTRIBUTORE))

CREATE TABLE DISTRIBUTORE(
MATRICOLA CHAR(10) PRIMARY KEY,
MODELLO CHAR(30) NOT NULL,
TIPO CHAR(5) NOT NULL REFERENCES MECCANICA(CODICE),
DATA_ACQUISTO DATE)

CREATE TABLE MECCANICA(
CODICE CHAR(5) PRIMARY KEY,
DESCRIZIONE CHAR(50) NOT NULL)

CREATE TABLE OFFERTA(
PROGRESSIVO INTEGER,
DISTRIBUTORE CHAR(10) REFERENCES DISTRIBUTORE(MATRICOLA),
PRODOTTO CHAR(5) NOT NULL REFERENCES PRODOTTO(CODICE),
PEZZI INTEGER NOT NULL,
PREZZO INTEGER NOT NULL,
PRIMARY KEY(PROGRESSIVO))

CREATE TABLE PRODOTTO(
CODICE CHAR(5) PRIMARY KEY,
DESCRIZIONE CHAR(50) NOT NULL,
MARCA CHAR(50),
QUANTITA INTERGER NOT NULL,
COMPATIBILE CHAR(5) NOT NULL REFERENCES MECCANICA(CODICE))

CREATE TABLE RIFORNIMENTO(
PROGRESSIVO INTEGER,
INTERVENTO INTEGER NOT NULL REFERENCES INTERVENTO(PROGRESSIVO),
OFFERTA CHAR(5) NOT NULL REFERENCES OFFERTA(PROGRESSIVO),
PEZZI INTEGER NOT NULL,
PRIMARY KEY(PROGRESSIVO))

CREATE TABLE MEZZO(
MATRICOLA CHAR(10) PRIMARY KEY,
MODELLO CHAR(30) NOT NULL,
TARGA CHAR(8) NOT NULL,
DATA_ACQUISTO DATE NOT NULL)

CREATE TABLE INTERVENTO(
PROGRESSIVO INTEGER PRIMARY KEY,
DISTRIBUTORE CHAR(10) NOT NULL REFERENCES DISTRIBUTORE(MATRICOLA),
FORNITORE CHAR(10) NOT NULL REFERENCES FORNITORE(MATRICOLA),
MEZZO CHAR(10) NOT NULL REFERENCES MEZZO(MATRICOLA),
DATA DATE NOT NULL,
INCASSO INTEGER NOT NULL)

CREATE TABLE FORNITORE(
MATRICOLA CHAR(10) PRIMARY KEY,
COGNOME CHAR(30) NOT NULL,
NOME CHAR(20) NOT NULL,
CODICE_FISCALE CHAR(16) UNIQUE NOT NULL)

CREATE TABLE MANUTENZIONE(
PROGRESSIVO INTEGER PRIMARY KEY,
INTERVENTO INTEGER NOT NULL REFERENCES INTERVENTO(PROGRESSIVO),
DESCRIZIONE CHAR(50) NOT NULL)

CREATE TABLE RICAMBIO(
CODICE CHAR(5) PRIMARY KEY,
DESCRIZIONE CHAR(50) NOT NULL,
COSTO_UNITARIO INTEGER)

CREATE TABLE SOSTITUZIONE(
PROGRESSIVO INTEGER PRIMARY KEY,
MANUTENZIONE INTEGER NOT NULL,
RICAMBIO CHAR(5) NOT NULL,
PEZZI INTEGER NOT NULL)

Torna all'indice