DROP TABLE IF EXISTS PERSONA;

CREATE TABLE PERSONA
(codice_fiscale VARCHAR(16)
PRIMARY KEY,
nome VARCHAR(20) NOT NULL,
cognome VARCHAR(20) NOT NULL,
data_di_nascita DATE NOT NULL,
sesso ENUM('M','F') NOT NULL);

DROP TABLE IF EXISTS PAZIENTE;
CREATE TABLE PAZIENTE
(codice_assistito VARCHAR(10)
PRIMARY KEY,
codice_fiscale VARCHAR(16) UNIQUE NOT NULL,
FOREIGN KEY (codice_fiscale) REFERENCES PERSONA(codice_fiscale)
);

DROP TABLE IF EXISTS DOTTORE;
CREATE TABLE DOTTORE
(codice_fiscale VARCHAR(16) 
PRIMARY KEY
REFERENCES PERSONA(codice_fiscale),
numero_visite INT DEFAULT 0 NOT NULL
);

DROP TABLE IF EXISTS GOLD;
CREATE TABLE GOLD
(codice_fiscale VARCHAR(16)
PRIMARY KEY
REFERENCES DOTTORE(codice_fiscale));

DROP TABLE IF EXISTS VISITA;
CREATE TABLE VISITA
(data DATE NOT NULL,
codice_assistito VARCHAR(10) NOT NULL
REFERENCES PAZIENTE(codice_assistito),
codice_fiscale VARCHAR(16) NOT NULL
REFERENCES DOTTORE(codice_fiscale),
PRIMARY KEY(data, codice_assistito, codice_fiscale));