provapraticabackend/initdb/01_schema.sql

43 lines
2.3 KiB
MySQL
Raw Normal View History

2026-06-09 13:15:32 +02:00
USE provapratica;
CREATE TABLE IF NOT EXISTS utenti (
utente_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
nome VARCHAR(100) NOT NULL,
cognome VARCHAR(100) NOT NULL,
email VARCHAR(255) NOT NULL,
password_hash VARCHAR(255) NOT NULL,
ruolo ENUM('DIPENDENTE', 'RESPONSABILE_AMMINISTRATIVO') NOT NULL DEFAULT 'DIPENDENTE',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (utente_id),
UNIQUE KEY uk_utenti_email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS categorie_spesa (
categoria_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
descrizione VARCHAR(150) NOT NULL,
PRIMARY KEY (categoria_id),
UNIQUE KEY uk_categorie_spesa_descrizione (descrizione)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS richieste_rimborso (
richiesta_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
data_inserimento DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
data_spesa DATE NOT NULL,
categoria_id INT UNSIGNED NOT NULL,
importo DECIMAL(10, 2) NOT NULL,
descrizione VARCHAR(500) NOT NULL,
riferimento_giustificativo VARCHAR(255) NULL,
stato ENUM('IN_ATTESA', 'APPROVATA', 'RIFIUTATA', 'LIQUIDATA') NOT NULL DEFAULT 'IN_ATTESA',
dipendente_id INT UNSIGNED NOT NULL,
data_valutazione DATETIME NULL,
responsabile_valutazione_id INT UNSIGNED NULL,
motivazione_rifiuto VARCHAR(500) NULL,
data_liquidazione DATETIME NULL,
PRIMARY KEY (richiesta_id),
CONSTRAINT fk_richieste_categoria FOREIGN KEY (categoria_id) REFERENCES categorie_spesa (categoria_id),
CONSTRAINT fk_richieste_dipendente FOREIGN KEY (dipendente_id) REFERENCES utenti (utente_id),
CONSTRAINT fk_richieste_responsabile FOREIGN KEY (responsabile_valutazione_id) REFERENCES utenti (utente_id),
CONSTRAINT chk_richieste_importo_positivo CHECK (importo > 0)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;