
drop database if exists autoparco;

create database autoparco;

use autoparco;

create table marche (nome varchar (20) primary key,
                     estera bool not null default 0);
create table motorizzazioni (tipo varchar (20) primary key);
create table stati (nomestato varchar (20) primary key);
create table automezzi (
	matricola	integer primary key,
	marca		varchar (20)
		references marche(nome)
		on delete cascade on update cascade,
	modello		varchar (30),
	motorizzazione	varchar (20)
		references motorizzazioni(tipo)
		on delete cascade on update cascade,
	cilindrata	integer,
	targa		varchar (20) not null unique,
	stato_corrente	varchar (20) not null
		references stati(nomestato)
		on delete cascade on update cascade);
create table CambioStati (
	Id_Cambio_Stato	integer auto_increment primary key,
	matricola	integer
		references automezzi(matricola)
		on delete cascade on update cascade,
	nuovo_stato	varchar (20) not null
		references stati(nomestato)
		on delete cascade on update cascade,
	data_ora	timestamp not null default now());

create table Pezzi (nome varchar (30) primary key);
create table Meccanici (
	matricola integer primary key,
	cognome	varchar (20) not null,
	nome varchar (20) not null,
	cod_fisc varchar (16) not null);

create table FoglioDiRiparazione (
	id_riparazione	integer auto_increment primary key,
	id_cambio_stato	integer
		references CambioStati (id_cambio_stato)
		on delete cascade on update cascade,
	intervento	varchar (40) not null,
	data		date not null,
	pezzo		varchar (20) default null
		references pezzi(nome)
		on delete cascade on update cascade,
	meccanico	integer
		references meccanici(matricola)
		on delete cascade on update cascade);
