-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcreateDB.sql
197 lines (179 loc) · 5.78 KB
/
createDB.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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
drop database if exists CatenaNegozi;
create database CatenaNegozi;
use CatenaNegozi;
drop user 'negozio'@'%';
create user 'negozio'@'%' identified by 'negozio';
grant all on catenanegozi.* to 'negozio'@'%';
drop table if exists PuntoVendita;
create table PuntoVendita
(
codice int PRIMARY KEY NOT NULL auto_increment,
via varchar(60) NOT NULL,
civico varchar(3) NOT NULL,
citta varchar(30) NOT NULL,
provincia char(2) NOT NULL,
numeroDipendenti int NOT NULL
);
drop table if exists Dipendente;
create table Dipendente
(
employeeNumber char(8) PRIMARY KEY NOT NULL,
nome varchar(20) NOT NULL,
cognome varchar(20) NOT NULL,
dataDiNascita date NOT NULL,
sesso char(1) NOT NULL,
oreSettimanali int NOT NULL,
puntoVendita int NOT NULL,
FOREIGN KEY (puntoVendita) REFERENCES PuntoVendita(codice) ON DELETE CASCADE ON UPDATE CASCADE,
CHECK (2022 - YEAR(dataDiNascita) >= 18) -- vincolo sull'età dei dipendenti --
);
drop table if exists TitolareSocio;
create table TitolareSocio
(
codiceFiscale char(16) PRIMARY KEY NOT NULL,
nome varchar(20) NOT NULL,
cognome varchar(20) NOT NULL,
dataDiNascita date NOT NULL,
sesso char(1) NOT NULL,
quota int NOT NULL,
puntoVendita int NOT NULL,
FOREIGN KEY (puntoVendita) REFERENCES PuntoVendita(codice) ON DELETE CASCADE ON UPDATE CASCADE
);
drop table if exists Magazzino;
create table Magazzino
(
codice int PRIMARY KEY NOT NULL auto_increment,
via varchar(50) NOT NULL,
civico varchar(3) NOT NULL,
citta varchar(30) NOT NULL,
provincia char(2) NOT NULL
);
drop table if exists Prodotto;
create table Prodotto
(
barcode char(13) PRIMARY KEY NOT NULL,
nome varchar(80) NOT NULL,
prezzo float NOT NULL
);
drop table if exists Console;
create table Console
(
prodotto char(13) PRIMARY KEY NOT NULL,
famiglia varchar(30) NOT NULL,
annoRilascio int NOT NULL,
FOREIGN KEY (prodotto) REFERENCES Prodotto(barcode) ON DELETE CASCADE ON UPDATE CASCADE
);
drop table if exists Gadget;
create table Gadget
(
prodotto char(13) PRIMARY KEY NOT NULL,
produttore varchar(30) NOT NULL,
serie varchar(50) NOT NULL,
FOREIGN KEY (prodotto) REFERENCES Prodotto(barcode) ON DELETE CASCADE ON UPDATE CASCADE
);
drop table if exists Videogioco;
create table Videogioco
(
prodotto char(13) NOT NULL PRIMARY KEY,
piattaforma varchar(20) NOT NULL,
descrizione varchar(250) NOT NULL,
dataRilascio date NOT NULL,
condizioni varchar(10) NOT NULL,
numeroGiocatori char(3) NOT NULL,
etaPEGI int NOT NULL,
FOREIGN KEY (prodotto) REFERENCES Prodotto(barcode) ON DELETE CASCADE ON UPDATE CASCADE
);
drop table if exists Categoria;
create table Categoria
(
nome varchar(30) NOT NULL,
videogioco char(13) NOT NULL,
PRIMARY KEY(nome, videogioco),
FOREIGN KEY (videogioco) REFERENCES Videogioco(prodotto) ON DELETE CASCADE ON UPDATE CASCADE
);
drop table if exists Contenuto;
create table Contenuto
(
tipo varchar(20) NOT NULL,
videogioco char(13) NOT NULL,
PRIMARY KEY(tipo, videogioco),
FOREIGN KEY (videogioco) REFERENCES Videogioco(prodotto) ON DELETE CASCADE ON UPDATE CASCADE
);
drop table if exists Acquisto;
create table Acquisto
(
numeroOrdine char(13) PRIMARY KEY NOT NULL,
dataAcquisto date NOT NULL,
metodoPagamento varchar(15) NOT NULL,
importoTotale float NOT NULL,
acconto float,
stato varchar(30),
indirizzoSpedizione varchar(150)
);
drop table if exists Cliente;
create table Cliente
(
codiceFiscale char(16) PRIMARY KEY NOT NULL,
nome varchar(20) NOT NULL,
cognome varchar(30) NOT NULL,
sesso char(1) NOT NULL,
dataDiNascita date NOT NULL
CHECK (2022 - YEAR(dataDiNascita) >= 16) -- vincolo sull'età dei clienti --
);
drop table if exists CartaFedelta;
create table CartaFedelta
(
numeroTessera char(12) PRIMARY KEY NOT NULL,
livello int NOT NULL,
cliente char(16) NOT NULL,
FOREIGN KEY (cliente) REFERENCES Cliente(codiceFiscale) ON DELETE CASCADE ON UPDATE CASCADE
);
drop table if exists FA_RIFORNIMENTO;
create table FA_RIFORNIMENTO
(
puntoVendita int NOT NULL,
magazzino int NOT NULL,
PRIMARY KEY(puntoVendita, magazzino),
FOREIGN KEY (puntoVendita) REFERENCES PuntoVendita(codice) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (magazzino) REFERENCES Magazzino(codice) ON DELETE CASCADE ON UPDATE CASCADE
);
drop table if exists VENDE;
create table VENDE
(
puntoVendita int NOT NULL,
prodotto char(13) NOT NULL,
quantita int NOT NULL,
sconto int NOT NULL,
PRIMARY KEY(puntoVendita, prodotto),
FOREIGN KEY (puntoVendita) REFERENCES PuntoVendita(codice) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (prodotto) REFERENCES Prodotto(barcode) ON DELETE CASCADE ON UPDATE CASCADE
);
drop table if exists DEPOSITATO;
create table DEPOSITATO
(
prodotto char(13) NOT NULL,
magazzino int NOT NULL,
quantita int NOT NULL,
PRIMARY KEY(prodotto, magazzino),
FOREIGN KEY (prodotto) REFERENCES Prodotto(barcode) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (magazzino) REFERENCES Magazzino(codice) ON DELETE CASCADE ON UPDATE CASCADE
);
drop table if exists CONTENUTO_IN;
create table CONTENUTO_IN
(
prodotto char(13) NOT NULL,
acquisto char(13) NOT NULL,
quantita int not null,
PRIMARY KEY (prodotto, acquisto),
FOREIGN KEY (prodotto) REFERENCES Prodotto(barcode) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (acquisto) REFERENCES Acquisto(numeroOrdine) ON DELETE CASCADE ON UPDATE CASCADE
);
drop table if exists EFFETTUATO_DA;
create table EFFETTUATO_DA
(
acquisto char(13) NOT NULL,
cliente char(16) NOT NULL,
PRIMARY KEY(acquisto, cliente),
FOREIGN KEY (acquisto) REFERENCES Acquisto(numeroOrdine) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (cliente) REFERENCES Cliente(codiceFiscale) ON DELETE CASCADE ON UPDATE CASCADE
);