-
Notifications
You must be signed in to change notification settings - Fork 0
/
modello_logico.sql
108 lines (87 loc) · 3.58 KB
/
modello_logico.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
-- AUTOMOBILI(targa*, modello, proprietario: CLIENTI, dispositivo: DISPOSITIVI);
-- CLIENTI(id*, nome, cognome, email, password, codice_fiscale, data_nascita, luogo_nascita);
-- DISPOSITIVI(id*, num_veicoli, proprietario: CLIENTI);
-- TRAGITTI(id*, dispositivo*: DISPOSITIVI, ingresso: CASELLI, data_ingresso, uscita: CASELLI, data_uscita):
-- CASELLI(id*, nome, numero);
-- CARTE(id*, numero, cvv, data_scadenza, cliente: CLIENTI);
-- CONTI(id*, iban, numero_conto, cliente: CLIENTI);
-- FATTURE(id*, cliente: CLIENTI, data_generazione, importo);
ALTER SESSION SET NLS_DATE_FORMAT='DD-MM-YYYY HH24:MI:SS';
-- select * from nls_session_parameters;
CREATE SEQUENCE clienti_id_sequence START WITH 1;
CREATE TABLE CLIENTI (
id INTEGER DEFAULT clienti_id_sequence.nextval,
nome VARCHAR2(60) NOT NULL,
cognome VARCHAR2(60) NOT NULL,
email VARCHAR2(30) NOT NULL,
password VARCHAR2(32) NOT NULL,
codice_fiscale VARCHAR2(16) NOT NULL,
data_nascita DATE NOT NULL,
luogo_nascita VARCHAR2(60) NOT NULL,
CONSTRAINT PK_CLIENTI PRIMARY KEY (id)
);
CREATE SEQUENCE dispositivi_id_sequence START WITH 1;
CREATE TABLE DISPOSITIVI (
id INTEGER DEFAULT dispositivi_id_sequence.nextval,
numero_veicoli INTEGER DEFAULT 0,
proprietario INTEGER NOT NULL,
CONSTRAINT PK_DISPOSITIVI PRIMARY KEY (id),
CONSTRAINT FK_DISPOSITIVI FOREIGN KEY (proprietario) REFERENCES CLIENTI (id) ON DELETE CASCADE
);
CREATE TABLE AUTOMOBILI (
targa VARCHAR2(7),
modello VARCHAR2(40) NOT NULL,
proprietario INTEGER NOT NULL,
dispositivo INTEGER,
CONSTRAINT PK_AUTOMOBILI PRIMARY KEY (targa),
CONSTRAINT FK_AUTOMOBILI_CLIENTI FOREIGN KEY (proprietario) REFERENCES CLIENTI (id) ON DELETE CASCADE,
CONSTRAINT FK_AUTOMOBILI_DISPOSITIVI FOREIGN KEY (dispositivo) REFERENCES DISPOSITIVI (id) ON DELETE CASCADE
);
CREATE SEQUENCE caselli_id_sequence START WITH 1;
CREATE TABLE CASELLI (
id INTEGER DEFAULT caselli_id_sequence.nextval,
nome VARCHAR2(60) NOT NULL,
numero INTEGER NOT NULL,
CONSTRAINT PK_CASELLI PRIMARY KEY (id)
);
CREATE SEQUENCE tragitti_id_sequence START WITH 1;
CREATE TABLE TRAGITTI (
id INTEGER DEFAULT tragitti_id_sequence.nextval,
dispositivo INTEGER,
ingresso INTEGER NOT NULL,
data_ingresso DATE NOT NULL,
uscita INTEGER NOT NULL,
data_uscita DATE NOT NULL,
CONSTRAINT PK_TRAGITTI PRIMARY KEY (id, dispositivo),
CONSTRAINT FK_TRAGITTI_DISPOSITIVI FOREIGN KEY (dispositivo) REFERENCES DISPOSITIVI (id) ON DELETE CASCADE,
CONSTRAINT FK_CASELLI_INGRESSI FOREIGN KEY (ingresso) REFERENCES CASELLI (id) ON DELETE CASCADE,
CONSTRAINT FK_CASELLI_USCITE FOREIGN KEY (uscita) REFERENCES CASELLI (id) ON DELETE CASCADE
);
CREATE SEQUENCE carte_id_sequence START WITH 1;
CREATE TABLE CARTE (
id INTEGER DEFAULT carte_id_sequence.nextval,
numero INTEGER NOT NULL,
cvv INTEGER NOT NULL,
data_scadenza DATE NOT NULL,
cliente INTEGER NOT NULL,
CONSTRAINT PK_CARTE PRIMARY KEY (id),
CONSTRAINT FK_CARTE FOREIGN KEY (cliente) REFERENCES CLIENTI (id) ON DELETE CASCADE
);
CREATE SEQUENCE conti_id_sequence START WITH 1;
CREATE TABLE CONTI (
id INTEGER DEFAULT conti_id_sequence.nextval,
iban VARCHAR2(34) NOT NULL,
numero_conto VARCHAR2(12) NOT NULL,
cliente INTEGER NOT NULL,
CONSTRAINT PK_CONTI PRIMARY KEY (id),
CONSTRAINT FK_CONTI FOREIGN KEY (cliente) REFERENCES CLIENTI (id) ON DELETE CASCADE
);
CREATE SEQUENCE fatture_id_sequence START WITH 1;
CREATE TABLE FATTURE (
id INTEGER DEFAULT fatture_id_sequence.nextval,
cliente INTEGER NOT NULL,
data_generazione DATE NOT NULL,
importo FLOAT NOT NULL,
CONSTRAINT PK_FATTURE PRIMARY KEY (id),
CONSTRAINT FK_FATTURE FOREIGN KEY (cliente) REFERENCES CLIENTI (id) ON DELETE CASCADE
);