· 7 years ago · Jan 27, 2019, 11:30 AM
1
2
3/*
4 * SQL structure
5 *
6 */
7
8DROP TABLE IF EXISTS `VenditaOffline`;
9DROP TABLE IF EXISTS `VenditaOnline`;
10DROP TABLE IF EXISTS `Spedizione`;
11DROP TABLE IF EXISTS `Inserzione`;
12DROP TABLE IF EXISTS `Auto`;
13DROP TABLE IF EXISTS `Moto`;
14DROP TABLE IF EXISTS `Categoria`;
15DROP TABLE IF EXISTS `Agente`;
16DROP TABLE IF EXISTS `Camionista`;
17DROP TABLE IF EXISTS `Impiegato`;
18DROP TABLE IF EXISTS `Filiale`;
19DROP TABLE IF EXISTS `Responsabile`;
20DROP TABLE IF EXISTS `Citta`;
21DROP TABLE IF EXISTS `Provincia`;
22DROP TABLE IF EXISTS `Regione`;
23DROP TABLE IF EXISTS `Camion`;
24DROP TABLE IF EXISTS `Cliente`;
25DROP TABLE IF EXISTS `Utente`;
26
27
28/*
29 * unico problema Inserzione e Vendita_Offline codiceauto codicemoto unique
30 * codice vendita SPEDIZIONE codicevenditaoofline e codicevenditaonline
31 */
32
33CREATE TABLE `Regione`(
34 `Id` int PRIMARY KEY,
35 `Nome` varchar(20)
36)Engine=InnoDB CHARSET=utf8;
37INSERT INTO `Regione` (`Id`,`Nome`) VALUES
38(1, 'Veneto'),
39(2, 'Lombardia'),
40(3, 'Piemonte'),
41(4, 'Lazio');
42
43CREATE TABLE `Provincia`(
44 `Id` int PRIMARY KEY,
45 `Nome` varchar(20),
46 `CodiceRegione` int NOT NULL,
47 FOREIGN KEY(`CodiceRegione`) REFERENCES `Regione`(`Id`)
48)Engine=InnoDB CHARSET=utf8;
49INSERT INTO `Provincia` (`Id`,`Nome`,`CodiceRegione`) VALUES
50(1, 'Padova', 1),
51(2, 'Venezia', 1),
52(3, 'Treviso', 1),
53(4, 'Milano', 2),
54(5, 'Torino', 3),
55(6, 'Roma', 4);
56
57CREATE TABLE `Citta`(
58 `Id` int PRIMARY KEY,
59 `Nome` varchar(20),
60 `CodiceProvincia` int NOT NULL,
61 FOREIGN KEY(`CodiceProvincia`) REFERENCES `Provincia`(`Id`)
62)Engine=InnoDB CHARSET=utf8;
63INSERT INTO `Citta` (`Id`,`Nome`,`CodiceProvincia`) VALUES
64(1, 'Padova', 1),
65(2, 'Due Carrare', 1),
66(3, 'Venezia', 2),
67(4, 'Chioggia', 2),
68(5, 'Treviso', 3),
69(6, 'Castelfranco Veneto', 3),
70(7, 'Milano', 4),
71(8, 'Torino', 5),
72(9, 'Cirie', 5),
73(10, 'Roma', 6),
74(11, 'Citta del Vaticano', 6);
75
76CREATE TABLE `Camion`(
77 `Id` int PRIMARY KEY,
78 `DataUltimoTagliando` date,
79 `DataProssimarevisione` date,
80 `MaxAuto` smallint
81)Engine=InnoDB CHARSET=utf8;
82INSERT INTO `Camion` (`Id`, `DataUltimotagliando`,`DataProssimaRevisione`,`MaxAuto`) VALUES
83(1, '2018-05-10', '2019-11-24', 5),
84(2, '2018-09-23', '2019-02-22', 3),
85(3, '2019-01-22', '2020-01-10', 7),
86(4, '2018-03-14', '2020-08-19', 2);
87
88CREATE TABLE `Cliente`(
89 `Id` int PRIMARY KEY,
90 `Nome` varchar(20) NOT NULL,
91 `Cognome` varchar(20) NOT NULL,
92 `Indirizzo` varchar(30),
93 `Telefono` varchar(15),
94 `Mail` varchar(50)
95)Engine=InnoDB CHARSET=utf8;
96
97CREATE TABLE `Utente`(
98 `Id` int PRIMARY KEY,
99 `Nome` varchar(20) NOT NULL,
100 `Cognome` varchar(20) NOT NULL,
101 `Indirizzo` varchar(30),
102 `Telefono` varchar(15),
103 `Mail` varchar(50)
104)Engine=InnoDB CHARSET=utf8;
105
106CREATE TABLE `Responsabile`(
107 `Id` int PRIMARY KEY,
108 `Nome` varchar(20) NOT NULL,
109 `Cognome` varchar(20) NOT NULL,
110 `Indirizzo` varchar(30),
111 `Telefono` varchar(15),
112 `Mail` varchar(50),
113 `Stipendio` decimal(9,2) NOT NULL,
114 `Filiale` int NOT NULL
115)Engine=InnoDB CHARSET=utf8;
116CREATE TABLE `Filiale`(
117 `Id` int PRIMARY KEY,
118 `Indirizzo` varchar(30) NOT NULL,
119 `CodiceCitta` int NOT NULL,
120 FOREIGN KEY(`CodiceCitta`) REFERENCES `Citta`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
121 `CodiceResponsabile` int NOT NULL,
122 FOREIGN KEY(`CodiceResponsabile`) REFERENCES `Responsabile`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE
123)Engine=InnoDB CHARSET=utf8;
124
125 CREATE TABLE `Impiegato`(
126 `Id` int PRIMARY KEY,
127 `Nome` varchar(20) NOT NULL,
128 `Cognome` varchar(20) NOT NULL,
129 `Indirizzo` varchar(30),
130 `Telefono` varchar(15),
131 `Mail` varchar(50),
132 `Stipendio` decimal(9,2) NOT NULL,
133 `Filiale` int NOT NULL,
134 FOREIGN KEY(`Filiale`) REFERENCES `Filiale`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE
135)Engine=InnoDB CHARSET=utf8;
136
137CREATE TABLE `Agente`(
138 `Id` int PRIMARY KEY,
139 `Nome` varchar(20) NOT NULL,
140 `Cognome` varchar(20) NOT NULL,
141 `Indirizzo` varchar(30),
142 `Telefono` varchar(15),
143 `Mail` varchar(50),
144 `Stipendio` decimal(9,2) NOT NULL,
145 `Filiale` int NOT NULL,
146 FOREIGN KEY(`Filiale`) REFERENCES `Filiale`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE
147)Engine=InnoDB CHARSET=utf8;
148CREATE TABLE `Camionista`(
149 `Id` int PRIMARY KEY,
150 `Nome` varchar(20) NOT NULL,
151 `Cognome` varchar(20) NOT NULL,
152 `Indirizzo` varchar(30),
153 `Telefono` varchar(15),
154 `Mail` varchar(50),
155 `Stipendio` decimal(9,2) NOT NULL,
156 `Filiale` int NOT NULL,
157 FOREIGN KEY(`Filiale`) REFERENCES `Filiale`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE
158)Engine=InnoDB CHARSET=utf8;
159
160CREATE TABLE `Categoria`(
161 `Id` int PRIMARY KEY,
162 `Nome` varchar(50) NOT NULL
163)Engine=InnoDB CHARSET=utf8;
164
165CREATE TABLE `Auto` (
166 `Id` int PRIMARY KEY,
167 `Marca` varchar(50) NOT NULL,
168 `Modello` varchar(50) NOT NULL,
169 `AnnoProduzione` smallint NOT NULL,
170 `DataImmatricolazione` date NOT NULL,
171 `TipoCarburante` varchar(10) NOT NULL,
172 `NumProprietari` smallint NOT NULL,
173 `Prezzo` decimal(9,2) NOT NULL,
174 `Colore` varchar(10),
175 `ClasseEmissioni` varchar(5),
176 `Cilindrata` int(10),
177 `Potenza` smallint,
178 `Kilometraggio` int(10),
179 `DataUltimoTagliando` date,
180 `DataProssimaRevisione` date,
181 `NumPosti` smallint,
182 `NumPorte` smallint,
183 `Optional` varchar(50),
184 `Cambio` varchar(10),
185 `Trazione` varchar(15),
186 `Categoria` int NOT NULL,
187 FOREIGN KEY(`Categoria`) REFERENCES `Categoria`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
188 `Citta` int NOT NULL,
189 FOREIGN KEY(`Citta`) REFERENCES `Citta`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
190 `Filiale` int NOT NULL,
191 FOREIGN KEY(`Filiale`) REFERENCES `Filiale`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE
192)Engine=InnoDB CHARSET=utf8;
193
194
195CREATE TABLE `Moto` (
196 `Id` int PRIMARY KEY,
197 `Marca` varchar(50) NOT NULL,
198 `Modello` varchar(50) NOT NULL,
199 `AnnoProduzione` smallint NOT NULL,
200 `DataImmatricolazione` date NOT NULL,
201 `NumProprietari` smallint NOT NULL,
202 `Prezzo` decimal(9,2) NOT NULL,
203 `Colore` varchar(10),
204 `ClasseEmissioni` varchar(5),
205 `Cilindrata` int(10),
206 `Potenza` smallint,
207 `Kilometraggio` int(10),
208 `DataUltimoTagliando` date,
209 `DataProssimaRevisione` date,
210 `Categoria` int NOT NULL,
211 FOREIGN KEY(`Categoria`) REFERENCES `Categoria`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
212 `Citta` int NOT NULL,
213 FOREIGN KEY(`Citta`) REFERENCES `Citta`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
214 `Filiale` int NOT NULL,
215 FOREIGN KEY(`Filiale`) REFERENCES `Filiale`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE
216)Engine=InnoDB CHARSET=utf8;
217
218CREATE TABLE `Inserzione`(
219 `Id` int PRIMARY KEY,
220 `DataPubblicazione` date,
221 `Descrizione` varchar(100),
222 `CodiceUtente` int NOT NULL,
223 FOREIGN KEY(`CodiceUtente`) REFERENCES `Utente`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
224 `CodiceAuto` int,
225 FOREIGN KEY(`CodiceAuto`) REFERENCES `Auto`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
226 `CodiceMoto` int,
227 FOREIGN KEY(`CodiceMoto`) REFERENCES `Moto`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
228 CHECK(`CodiceAuto` IS NOT NULL OR `CodiceMoto` IS NOT NULL)
229)Engine=InnoDB CHARSET=utf8;
230
231CREATE TABLE `Spedizione`(
232 `Id` int PRIMARY KEY,
233 `DataPartenza` date,
234 `DataArrivoPrevisto` date,
235 `DataArrivoEffettivo` date,
236 `Costo` decimal(9,2),
237 `CodiceCamionista` int NOT NULL,
238 FOREIGN KEY(`CodiceCamionista`) REFERENCES `Camionista`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
239 `CodiceCamion` int NOT NULL,
240 FOREIGN KEY(`CodiceCamion`) REFERENCES `Camion`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE
241)Engine=InnoDB CHARSET=utf8;
242CREATE TABLE `VenditaOnline`(
243 `Id` int PRIMARY KEY,
244 `DataAcquisto` date,
245 `CodiceAcquirente` int NOT NULL,
246 FOREIGN KEY(`CodiceAcquirente`) REFERENCES `Utente`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
247 `CodiceInserzione` int NOT NULL,
248 FOREIGN KEY(`CodiceInserzione`) REFERENCES `Inserzione`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
249 `CodiceSpedizione` int NOT NULL,
250 FOREIGN KEY(`CodiceSpedizione`) REFERENCES `Spedizione`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE
251)Engine=InnoDB CHARSET=utf8;
252
253CREATE TABLE `VenditaOffline`(
254 `Id` int PRIMARY KEY,
255 `DataAcquisto` date,
256 `CodiceAuto` int,
257 FOREIGN KEY(`CodiceAuto`) REFERENCES `Auto`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
258 `CodiceMoto` int,
259 FOREIGN KEY(`CodiceMoto`) REFERENCES `Moto`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
260 `CodiceAgente` int NOT NULL,
261 FOREIGN KEY(`CodiceAgente`) REFERENCES `Agente`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
262 `CodiceCliente` int NOT NULL,
263 FOREIGN KEY(`CodiceCliente`) REFERENCES `Cliente`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
264 `CodiceSpedizione` int NOT NULL,
265 FOREIGN KEY(`CodiceSpedizione`) REFERENCES `Spedizione`(`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
266 CHECK(`CodiceAuto` IS NOT NULL OR `CodiceMoto` IS NOT NULL)
267)Engine=InnoDB CHARSET=utf8;