idSERIALPK
usernameVARCHARNNUQ
emailVARCHARNNUQ
created_atTIMESTAMPNNDF
Progetta schemi database visualmente e genera SQL per PostgreSQL, MySQL, SQLite.
-- 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")
);Digita un nome tabella e premi "Aggiungi tabella". Ogni nuova tabella parte già con una colonna id SERIAL/AUTO_INCREMENT come chiave primaria.
Per ogni tabella aggiungi colonne scegliendo tipo (INTEGER, VARCHAR, DECIMAL, JSONB...) e vincoli (PRIMARY KEY, NOT NULL, UNIQUE, DEFAULT, REFERENCES).
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.
Seleziona PostgreSQL, MySQL o SQLite: il DDL generato si aggiorna in tempo reale. Copia negli appunti o scarica il file .sql.
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.
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.
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.
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.