DROP DATABASE IF EXISTS MotoCare;
CREATE DATABASE MotoCare;
USE MotoCare;

-- 1. CREAZIONE TABELLE

CREATE TABLE MOTOCICLISTA (
    idTessera INT AUTO_INCREMENT PRIMARY KEY,
    cognome VARCHAR(50) NOT NULL,
    nome VARCHAR(50) NOT NULL,
    dataNascita DATE,
    marcaMoto VARCHAR(50), 
    email VARCHAR(100)
);

CREATE TABLE LAVORAZIONE (
    codiceLavoro VARCHAR(10) PRIMARY KEY, 
    descrizione VARCHAR(100) NOT NULL,   
    meccanico VARCHAR(50)
);

-- Questa tabella deriva dalla relazione N:N "RICHIEDERE"
CREATE TABLE RICHIEDERE (
    idRichiesta INT AUTO_INCREMENT PRIMARY KEY,   -- inserita per meglio identificare ogni singola richiesta
    dataRichiesta DATE NOT NULL,
    costo DECIMAL(10, 2), -- Attributo della relazione
    tipo VARCHAR(50),     -- Attributo della relazione
    idTessera INT,		-- FK che punta a Motociclista
    codiceLavoro VARCHAR(10), -- FK che punta a Lavorazione
    FOREIGN KEY (idTessera) REFERENCES MOTOCICLISTA(idTessera),
    FOREIGN KEY (codiceLavoro) REFERENCES LAVORAZIONE(codiceLavoro)
);

CREATE TABLE SINISTRO (
    idSinistro INT AUTO_INCREMENT PRIMARY KEY,
    dataSinistro DATE,
    giorniFermo INT,
    rimborsato CHAR(1) DEFAULT 'N',  -- il valore di default è sempre 'N'
    idTessera INT,
    FOREIGN KEY (idTessera) REFERENCES MOTOCICLISTA(idTessera)
);

-- 2. INSERIMENTO DATI
-- NOTA BENE: Avendo inserito le Primary Key come INT AUTO_INCREMENT, nelle insert non vengono inserite perchè è il sistema che lo fa in automatico

INSERT INTO MOTOCICLISTA (cognome, nome, dataNascita, marcaMoto, email) VALUES
('Rossi', 'Marco', '1990-05-12', 'Ducati', 'marco.rossi@email.it'),
('Bianchi', 'Luca', '1985-11-20', 'Honda', 'luca.bianchi@email.it'),
('Verdi', 'Anna', '1995-02-15', 'Yamaha', NULL), 
('Neri', 'Giorgio', '2000-08-10', 'Ducati', 'gio.neri@test.com'), 
('Esposito', 'Giulia', '1998-07-01', 'BMW', 'giulia@email.it'),
('Romano', 'Paolo', '1988-12-30', 'KTM', NULL), 
('Ferrari', 'Matteo', '1992-03-25', 'Aprilia', 'matteo@email.it'); 

INSERT INTO LAVORAZIONE (codiceLavoro, descrizione, meccanico) VALUES
('L01', 'Tagliando Completo', 'Mario Andero'),
('L02', 'Sostituzione Pneumatici', 'Luigi Coretti'),
('L03', 'Revisione Motore', 'Giovanni Arturi'), 
('L04', 'Sostituzione Freni', 'Mario Andero'),
('L05', 'Controllo Elettronica', 'Anna Ferroli'); 

INSERT INTO RICHIEDERE (dataRichiesta, costo, tipo, idTessera, codiceLavoro) VALUES
('2024-01-10', 150.00, 'Tagliando', 1, 'L01'),
('2024-02-15', 40.00, 'Urgenza', 1, 'L02'), 
('2024-03-20', 250.00, 'Straordinario', 2, 'L03'),
('2024-05-10', 90.00, 'Tagliando', 2, 'L01'),   
('2024-06-05', 45.00, 'Ordinario', 3, 'L04'),   
('2024-07-01', 300.00, 'Straordinario', 4, 'L03'),
('2024-08-12', 200.00, 'Ordinario', 5, 'L02'),
('2024-10-15', 500.00, 'Urgenza', 1, 'L03'),    
('2024-09-09', 120.00, 'Urgenza', 4, 'L02'),
('2024-11-20', 180.00, 'Tagliando', 5, 'L01');

INSERT INTO SINISTRO (dataSinistro, giorniFermo, idTessera) VALUES
('2024-05-10', 3, 1), 
('2024-06-20', 5, 1), 
('2024-10-05', 2, 2), 
('2024-10-25', 10, 3), 
('2023-01-01', 1, 7), 
('2023-02-01', 1, 7), 
('2023-03-01', 1, 7),
('2023-04-01', 1, 7), 
('2023-05-01', 1, 7), 
('2023-06-01', 1, 7);