· 5 years ago · May 20, 2020, 09: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 CONSTRAINT chk_CodT CHECK (CodT>=1), -- vincolo
51 CONSTRAINT chk_Edizione CHECK (Edizione>=1) -- vincolo
52);
53
54CREATE TABLE CLASSIFICA_INDIVIDUALE (
55 CodC CHAR(50), -- chiave primaria, foreign key
56 CodT INTEGER, -- chiave primaria, foreign key
57 Edizione INTEGER, -- chiave primaria, foreign key
58 Posizione INTEGER NOT NULL,
59 PRIMARY KEY (CodC, Edizione, CodT),
60 FOREIGN KEY (CodC)
61 REFERENCES CICLISTA(CodC)
62 ON DELETE CASCADE
63 ON UPDATE CASCADE,
64 FOREIGN KEY (Edizione, CodT)
65 REFERENCES TAPPA(Edizione, CodT)
66 ON DELETE CASCADE
67 ON UPDATE CASCADE
68);