· 5 years ago · May 19, 2020, 06:16 PM
1-- create an empty database. Name of the database:
2-- SET storage_engine=InnoDB;
3SET FOREIGN_KEY_CHECKS = 1;
4CREATE DATABASE IF NOT EXISTS CICLISTI
5CHARACTER SET utf8mb4;
6
7-- USE CICLISTI
8USE CICLISTI;
9
10
11-- drop tables if they already exist
12DROP TABLE IF EXISTS CICLISTA;
13DROP TABLE IF EXISTS SQUADRA;
14DROP TABLE IF EXISTS TAPPA;
15DROP TABLE IF EXISTS CLASSIFICA_INDIVIDUALE;
16
17-- create tables
18CREATE TABLE SQUADRA (
19 CodS CHAR(50) PRIMARY KEY, -- chiave primaria
20 NomeS CHAR(50) NOT NULL,
21 AnnoFondazione INTEGER NOT NULL,
22 SedeLegale CHAR(50), -- campo opzionale
23 CONSTRAINT chk_AnnoFondazione CHECK (AnnoFondazione>=1900 AND AnnoFondazione<=2000) -- vincolo
24);
25
26CREATE TABLE CICLISTA (
27 CodC CHAR(50) PRIMARY KEY, -- chiave primaria
28 Nome CHAR(50) NOT NULL,
29 Cognome CHAR(50) NOT NULL,
30 Nazionalita CHAR(50) NOT NULL,
31 CodS CHAR(50) NOT NULL, -- foreign key
32 AnnoNascita INTEGER NOT NULL,
33 FOREIGN KEY (CodS)
34 REFERENCES SQUADRA(CodS)
35 ON DELETE CASCADE
36 ON UPDATE CASCADE,
37 CONSTRAINT chk_AnnoNascita CHECK (AnnoNascita>=1900 AND AnnoNascita<=2000) -- vincolo
38);
39
40CREATE TABLE TAPPA (
41 Edizione INTEGER, -- chiave primaria
42 CodT INTEGER, -- chiave primaria
43 CittaPartenza CHAR(50) NOT NULL,
44 CittaArrivo CHAR(50) NOT NULL,
45 Lunghezza INTEGER NOT NULL,
46 Dislivello INTEGER NOT NULL,
47 GradoDifficolta SMALLINT NOT NULL,
48 PRIMARY KEY (Edizione, CodT),
49 CONSTRAINT chk_GradoDifficolta CHECK (GradoDifficolta>=1 AND GradoDifficolta<=10) -- vincolo
50);
51
52CREATE TABLE CLASSIFICA_INDIVIDUALE (
53 CodC CHAR(50), -- chiave primaria, foreign key
54 CodT INTEGER, -- chiave primaria, foreign key
55 Edizione INTEGER, -- chiave primaria, foreign key
56 Posizione INTEGER NOT NULL,
57 PRIMARY KEY (CodC, CodT, Edizione),
58 FOREIGN KEY (CodC)
59 REFERENCES CICLISTA(CodC)
60 ON DELETE CASCADE
61 ON UPDATE CASCADE,
62 FOREIGN KEY (CodT)
63 REFERENCES TAPPA(CodT)
64 ON DELETE CASCADE
65 ON UPDATE CASCADE,
66 FOREIGN KEY (Edizione)
67 REFERENCES TAPPA(Edizione)
68 ON DELETE CASCADE
69 ON UPDATE CASCADE
70);