Salta al contenuto principale

Nuova Tabella

Relazioni

  • posts.user_id 1-N users.id1-N
  • posts.id N-N tags.idN-N

SQL Generato

Tabelle3
Colonne11
Relazioni2
Righe SQL29
-- Schema generated by DB Schema Designer
-- Dialect: PostgreSQL
-- Generated: 2026-08-04T11:46:38.381Z

CREATE TABLE IF NOT EXISTS "users" (
  "id" SERIAL PRIMARY KEY,
  "username" VARCHAR(100) NOT NULL UNIQUE,
  "email" VARCHAR(255) NOT NULL UNIQUE,
  "created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE IF NOT EXISTS "posts" (
  "id" SERIAL PRIMARY KEY,
  "user_id" INTEGER NOT NULL,
  "title" VARCHAR(255) NOT NULL,
  "body" TEXT,
  "published" BOOLEAN DEFAULT false,
  FOREIGN KEY ("user_id") REFERENCES "users"("id")
);

CREATE TABLE IF NOT EXISTS "tags" (
  "id" SERIAL PRIMARY KEY,
  "name" VARCHAR(50) NOT NULL UNIQUE
);

-- Junction table for N-N: posts <-> tags
CREATE TABLE IF NOT EXISTS "posts_tags" (
  "posts_id" INTEGER NOT NULL,
  "tags_id" INTEGER NOT NULL,
  PRIMARY KEY ("posts_id", "tags_id"),
  FOREIGN KEY ("posts_id") REFERENCES "posts"("id"),
  FOREIGN KEY ("tags_id") REFERENCES "tags"("id")
);

Come utilizzare Database Schema Designer

Aggiungi le tabelle

Digita un nome tabella e premi "Aggiungi tabella". Ogni nuova tabella parte già con una colonna id SERIAL/AUTO_INCREMENT come chiave primaria.

Definisci colonne e vincoli

Per ogni tabella aggiungi colonne scegliendo tipo (INTEGER, VARCHAR, DECIMAL, JSONB...) e vincoli (PRIMARY KEY, NOT NULL, UNIQUE, DEFAULT, REFERENCES).

Collega le tabelle con relazioni

Nella sezione Relazioni scegli tabella e colonna sorgente/destinazione e il tipo (1-1, 1-N, N-N). Per le relazioni N-N il tool genera automaticamente la junction table.

Scegli il dialetto e copia l'SQL

Seleziona PostgreSQL, MySQL o SQLite: il DDL generato si aggiorna in tempo reale. Copia negli appunti o scarica il file .sql.

Suggerimenti

  • Imposta sempre NOT NULL sulle colonne obbligatorie prima di generare l'SQL: è più facile correggerlo ora che dopo il deploy.
  • Usa il formato "tabella.colonna" nel campo REFERENCES per collegare manualmente una foreign key inline senza passare dalla sezione Relazioni.
  • Per schemi complessi, genera prima l'SQL su SQLite per un test rapido locale, poi passa al dialetto di produzione (PostgreSQL/MySQL).

Domande frequenti

Come vengono gestite le relazioni molti-a-molti (N-N)?

Per ogni relazione N-N il tool genera automaticamente una junction table dedicata con due colonne chiave esterna (una per ciascuna tabella coinvolta) e una chiave primaria composta, evitando di doverla modellare manualmente.

Che differenze ci sono tra i tipi generati per PostgreSQL, MySQL e SQLite?

SERIAL diventa INT AUTO_INCREMENT su MySQL e INTEGER (con AUTOINCREMENT solo se PK) su SQLite; UUID diventa CHAR(36) su MySQL e TEXT su SQLite; JSONB diventa JSON su MySQL e TEXT su SQLite; TIMESTAMP diventa DATETIME su MySQL.

Posso modificare lo schema di esempio precaricato?

Sì, lo schema di esempio (users, posts, tags con relazioni 1-N e N-N) è un punto di partenza modificabile: puoi rinominare tabelle e colonne, aggiungerne altre o eliminarle liberamente, oppure premere "Reset" per ricominciare da zero.

Il tool valida vincoli di integrità referenziale complessi?

No, genera il DDL SQL (CREATE TABLE, FOREIGN KEY) sintatticamente corretto per il dialetto scelto, ma non esegue validazioni semantiche avanzate (es. cicli di dipendenza, cascade policy): verifica sempre lo script prima di eseguirlo su un database di produzione.