Progetta uno schema di database normalizzato
Trasforma i requisiti di business in uno schema relazionale normalizzato con entità, chiavi, vincoli, indici, DDL e query di verifica. Pensato per ChatGPT, Claude e Gemini. Include 6 variabili personalizzabili e puoi copiarlo gratuitamente con un clic.
Avanzato · Codice · In attesa di revisione editoriale
Prompt
Agisci come data architect con esperienza di modellazione relazionale e di {{engine}}.
Contesto applicativo: {{application}}.
Requisiti funzionali (cosa deve memorizzare e consentire il sistema): {{requirements}}.
Volume stimato: {{volume}}.
Query più frequenti: {{queries}}.
Consegna, in quest'ordine:
1. Le entità e gli attributi ricavati dai requisiti, segnalando ogni ambiguità che devo chiarire.
2. Un diagramma entità-relazione in sintassi Mermaid (`erDiagram`) con le cardinalità.
3. La motivazione della normalizzazione in 3NF (e dove ha senso una denormalizzazione voluta, con il motivo).
4. DDL completo per {{engine}}: tipi di dato appropriati, chiavi primarie (e la scelta tra interi, UUID o ULID), chiavi esterne con un `ON DELETE` motivato, vincoli `NOT NULL`, `UNIQUE`, `CHECK` e valori predefiniti.
5. Indici consigliati per le query frequenti, spiegando ciascuno.
6. Una strategia per le cancellazioni logiche, l'audit (`created_at`, `updated_at`) e i dati personali sensibili.
7. Tre query SQL di esempio che dimostrino che lo schema copre i casi d'uso principali.
8. Rischi di evoluzione dello schema e come gestirli con le migrazioni.
Vincoli:
- Non aggiungere entità che non derivano dai requisiti senza dirmelo.
- Usa nomi di tabelle e colonne in {{naming_language}}, in snake_case.
- Se mancano informazioni critiche, chiedimele prima di scrivere il DDL.Come usarlo
- Scrivi i requisiti come frasi semplici: «un cliente può avere più indirizzi».
- Aggiungi le query che eseguirai più spesso: guidano la scelta degli indici.
- Incolla il diagramma Mermaid in un visualizzatore compatibile per rivederlo.
- Esegui il DDL su un database di prova prima di scrivere le migrazioni definitive.
Esempio d'uso
Applicazione: gestione di una scuola di lingue · Requisiti: studenti, corsi, gruppi classe, iscrizioni e pagamenti mensili · Motore: PostgreSQL 16.
Esempio di risultato
4. DDL (estratto, PostgreSQL 16)
CREATE TABLE students (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
full_name text NOT NULL,
email text NOT NULL UNIQUE,
created_at timestamptz NOT NULL DEFAULT now(),
deleted_at timestamptz -- cancellazione logica
);
CREATE TABLE enrollments (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
student_id bigint NOT NULL REFERENCES students (id) ON DELETE RESTRICT,
class_group_id bigint NOT NULL REFERENCES class_groups (id) ON DELETE RESTRICT,
enrolled_on date NOT NULL DEFAULT current_date,
UNIQUE (student_id, class_group_id)
);
CREATE TABLE monthly_payments (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
enrollment_id bigint NOT NULL REFERENCES enrollments (id) ON DELETE RESTRICT,
period date NOT NULL CHECK (extract(day FROM period) = 1),
amount_cents integer NOT NULL CHECK (amount_cents >= 0),
paid_at timestamptz,
UNIQUE (enrollment_id, period)
);
-- Indice parziale per "studenti con pagamenti scaduti"
CREATE INDEX idx_payments_unpaid ON monthly_payments (period) WHERE paid_at IS NULL;
ON DELETE RESTRICT impedisce di perdere lo storico dei pagamenti se qualcuno elimina uno studente: per questo si usa la cancellazione logica. Gli importi sono in centesimi per evitare errori di arrotondamento.
Ambiguità
- Un pagamento copre una sola iscrizione o tutte quelle dello studente nel mese? [DA COMPLETARE]…
Dati chiave
- Categoria
- Programmazione e sviluppo · SQL
- Tipo di output
- Codice
- Livello
- Avanzato
- Pensato per
- ChatGPT, Claude e Gemini
- Verificato in
- In attesa di verifica editoriale
- Variabili
- Motore del database, Applicazione, Requisiti, Volume stimato, Query frequenti e Lingua dei nomi
- Lingua
- Italiano
- Prezzo
- Gratuito, senza registrazione
- Aggiornato
- 07/11/2026
Domande frequenti
Devo sempre normalizzare in 3NF?
È un ottimo punto di partenza che evita duplicati e incoerenze. Per il reporting o per tabelle quasi solo in lettura, denormalizzare può convenire, ma deve essere una scelta consapevole e documentata.
UUID o ID interi?
Gli interi sono compatti e veloci; UUID o ULID evitano di rivelare il numero di record e possono essere generati fuori dal database. Il prompt chiede all'IA di motivare la scelta.
A cosa serve questo prompt?
Trasforma i requisiti di business in uno schema relazionale normalizzato con entità, chiavi, vincoli, indici, DDL e query di verifica.
Con quali strumenti di IA funziona?
È pensato per ChatGPT, Claude e Gemini. Non lo abbiamo ancora verificato in questi strumenti, quindi i risultati possono variare da uno all'altro.
Come personalizzo il prompt?
Clicca su «Personalizza» e compila le variabili (Motore del database, Applicazione, Requisiti, Volume stimato, Query frequenti e Lingua dei nomi). Il testo si aggiorna all'istante e poi puoi copiarlo con un clic. I valori vengono salvati solo nel tuo browser.
Serve esperienza per usarlo?
È di livello avanzato: è pensato per persone con esperienza nell'argomento, in grado di valutare e regolare il risultato.
Questo prompt è gratuito?
Sì. Tutti i prompt di HomeCasa Prompts sono gratuiti, senza registrazione né abbonamento. Puoi usarli anche in progetti professionali.
Posso fidarmi dell'output dell'IA?
Consideralo una bozza di alta qualità: verifica sempre dati, cifre e affermazioni importanti prima di pubblicare o prendere decisioni.