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

  1. Scrivi i requisiti come frasi semplici: «un cliente può avere più indirizzi».
  2. Aggiungi le query che eseguirai più spesso: guidano la scelta degli indici.
  3. Incolla il diagramma Mermaid in un visualizzatore compatibile per rivederlo.
  4. 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.

Prompt correlati