🗄️ Schema completo, nell'ordine corretto
Le tabelle vanno create in un ordine preciso: prima quelle "indipendenti" (utenti, categorie), poi quella che le referenzia entrambe (articoli) — MySQL richiede che una tabella referenziata da una FOREIGN KEY esista già al momento della creazione.
CREATE TABLE utenti (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
email VARCHAR(150) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
ruolo ENUM('admin', 'editor', 'autore') DEFAULT 'autore'
);
CREATE TABLE categorie (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100) NOT NULL
);
-- Questa tabella referenzia le due sopra: va creata per ultima
CREATE TABLE articoli (
id INT AUTO_INCREMENT PRIMARY KEY,
titolo VARCHAR(200) NOT NULL,
slug VARCHAR(220) UNIQUE NOT NULL,
contenuto TEXT NOT NULL,
stato ENUM('bozza', 'pubblicato', 'archiviato') DEFAULT 'bozza',
autore_id INT,
categoria_id INT,
creato_il TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (autore_id) REFERENCES utenti(id),
FOREIGN KEY (categoria_id) REFERENCES categorie(id)
);
⚠️ Se provi a creare articoli PRIMA di utenti o categorie, MySQL restituisce un errore: non può creare una FOREIGN KEY verso una tabella che ancora non esiste.
✅ Checkpoint — a questo punto hai
Un database vuoto ma strutturato: 3 tabelle collegate correttamente, pronte a ricevere dati. Nessun file PHP ancora — è normale, arriva nel prossimo passo.