Copertina episodio: ๐——๐—ฎ๐—น๐—น๐—ฎ ๐—Ÿ๐—ผ๐—ด๐—ถ๐—ฐ๐—ฎ ๐—ฎ๐—น๐—น๐—ฎ ๐—ฆ๐˜๐—ฟ๐˜‚๐˜๐˜๐˜‚๐—ฟ๐—ฎ: ๐—–๐—ผ๐—บ๐—ฒ ๐˜€๐—ถ ๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฒ๐˜๐˜๐—ฎ ๐˜‚๐—ป ๐——๐—ฎ๐˜๐—ฎ๐—ฏ๐—ฎ๐˜€๐—ฒ ๐—ถ๐—ป ๐—Ÿ๐—ถ๐—ป๐—ด๐˜‚๐—ฎ๐—ด๐—ด๐—ถ๐—ผ ๐—ก๐—ฎ๐˜๐˜‚๐—ฟ๐—ฎ๐—น๐—ฒ.

๐——๐—ฎ๐—น๐—น๐—ฎ ๐—Ÿ๐—ผ๐—ด๐—ถ๐—ฐ๐—ฎ ๐—ฎ๐—น๐—น๐—ฎ ๐—ฆ๐˜๐—ฟ๐˜‚๐˜๐˜๐˜‚๐—ฟ๐—ฎ: ๐—–๐—ผ๐—บ๐—ฒ ๐˜€๐—ถ ๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฒ๐˜๐˜๐—ฎ ๐˜‚๐—ป ๐——๐—ฎ๐˜๐—ฎ๐—ฏ๐—ฎ๐˜€๐—ฒ ๐—ถ๐—ป ๐—Ÿ๐—ถ๐—ป๐—ด๐˜‚๐—ฎ๐—ด๐—ด๐—ถ๐—ผ ๐—ก๐—ฎ๐˜๐˜‚๐—ฟ๐—ฎ๐—น๐—ฒ.

Sito web personale โ€” Da 0 a Deploy ยท Episodio 3 ยท 26 maggio 2026

Un database รจ la memoria del sito. Non l'abbiamo progettato manualmente: abbiamo descritto in italiano tutto quello che il sito deve ricordare (utenti, articoli, eventi, ecc.), e l'AI ha tradotto il prompt in 11 tabelle SQL complete. La lezione? Progettare un database significa descrivere il tuo pensiero.

Un sito web senza database รจ come una casa senza muri: tutto sparisce ogni volta che ricarichi la pagina. Gli articoli scompaiono. I tuoi visitatori spariscono. Il database รจ la memoria del sito โ€” quello che gli permette di ricordare.

Non l'abbiamo progettato manualmente, tabella per tabella. L'abbiamo descritto in italiano, e l'AI l'ha tradotto in SQL.

Il prompt originale

Ecco il prompt esatto che ho inviato a Claude Code:

"Il sito deve gestire queste informazioni: Utenti: nome, email, password hashata, ruolo (admin/user), foto profilo URL, data registrazione - Articoli: titolo, contenuto HTML, excerpt, categoria, slug URL, immagine copertina, autore, data pubblicazione, stato (bozza/pubblicato) - Eventi: titolo, data, luogo, descrizione, URL immagine, stato (futuro/passato) - Esperienze professionali: periodo inizio/fine, ruolo, azienda, sede, descrizione, competenze - Formazione: periodo, titolo, istituzione, voto, descrizione - Certificazioni: nome, emittente, anno, URL documento - Iscritti newsletter: email, data iscrizione, stato attivo/inattivo - Messaggi contatti: nome, email, oggetto, messaggio, data, letto/non letto - Profilo: nome, sottotitolo, bio HTML, foto URL, logo URL, statistiche JSON - Thread forum: titolo, corpo, categoria, autore, data - Risposte forum: thread, corpo, autore, data. Crea lo schema SQL con chiavi primarie, chiavi esterne, indici e constraint appropriati."

Nessuna riga di SQL. Solo italiano. E da questo, Claude Code ha generato automaticamente 11 tabelle complete con tutti i vincoli e le relazioni.

Le undici tabelle

Users (utenti), Articles (articoli), Events (eventi), Experiences (esperienze), Education (formazione), Certifications (certificazioni), Newsletter_subscribers (iscritti), Contact_messages (messaggi), Profile (profilo del sito), Threads (discussioni forum), Replies (risposte forum).

Ogni tabella รจ come un cassetto. Ogni riga nel cassetto รจ un record. Ogni colonna รจ un attributo. Gli articoli si collegano agli utenti (chi li ha scritti). Le risposte si collegano ai thread (a quale discussione appartengono). รˆ tutto interconnesso.

Lo schema SQL generato

Claude Code ha tradotto il prompt italiano in uno schema SQL completo. Ecco come sono strutturate due tabelle fondamentali:

La tabella degli utenti contiene: l'ID univoco di ogni utente, il nome, l'email (che deve essere unica โ€” non possono esistere due account con lo stesso email), la password criptata in modo sicuro, un flag che indica se รจ admin o utente normale, l'URL della foto profilo e la data di creazione dell'account.

La tabella degli articoli contiene: l'ID univoco dell'articolo, il titolo, il contenuto in HTML, un excerpt (il riassunto), la categoria, lo slug (l'URL dell'articolo come "come-si-progetta-un-database"), l'ID dell'autore (che si collega direttamente alla tabella degli utenti โ€” cosรฌ il database sa chi ha scritto l'articolo), la data di pubblicazione, lo stato (se รจ una bozza o giร  pubblicato) e la data di creazione.

La parte interessante รจ il collegamento tra le due tabelle: quando crei un articolo, lo associ a un utente specifico. Se provi ad associare un articolo a un utente che non esiste, il database lo rifiuta automaticamente. รˆ una protezione.

Un bug e la soluzione

Quando abbiamo deployato il sito, il database conteneva dati di demo. Il profilo aveva il nome "Mario Rossi" โ€” un placeholder. Ma il sito era giร  online e pubblico. I visitatori vedevano "Mario Rossi" al posto del tuo nome.

Soluzione: Un prompt diretto all'AI: "Aggiorna il database di produzione: cambia il nome del profilo da 'Mario Rossi' a 'Pasquale Sicignano', aggiorna bio, sottotitolo e credenziali admin con la mia email reale."

Claude Code ha generato il comando SQL corretto. Nessun danno collaterale. Nessun file toccato. Solo la modifica necessaria.

La lezione: Anche gli aggiornamenti del database si descrivono in italiano. Non devi imparare SQL. Descrivi cosa vuoi, l'AI lo traduce.

Perchรฉ funziona

La struttura di un database riflette il tuo pensiero. Se sai che cosa vuoi conservare e come le cose si collegano tra loro, hai giร  fatto il 90% del lavoro. La traduzione in SQL รจ quasi automatica.

Non รจ magia. รˆ che il linguaggio naturale รจ abbastanza preciso da descrivere strutture logiche. E l'AI รจ abbastanza bravo da tradurlo in codice.

Prossimo episodio

Ora che il database esiste, il backend โ€” Node.js e Express โ€” impara a leggere e scrivere dentro. Come un login funziona. Come un articolo viene salvato. Come il database diventa vivo.

Resta aggiornato su AI, governance e trasformazione digitale

๐Ÿ“ฌ Esploriamo insieme AI e trasformazione digitale Condivido: - Riflessioni e articoli su governance e innovazione - Case study raccontati dal punto di vista pratico - Eventi e occasioni di confronto (online e offline) - Risorse utili che scopro lungo il cammino Una mail quando ho qualcosa di interessante da condividere. Niente vendite, solo contenuti.

Riceverai un'email per confermare la tua iscrizione.

โ† Torna agli episodi