DbSchema Features — One Model Your Team Designs, Reviews & Deploys From

  • See any of 100+ SQL and NoSQL databases as an ER diagram in minutes, without writing a query
  • Design offline, then generate the physical schema for PostgreSQL, MySQL, MongoDB or any engine you support
  • Review schema changes in Git, like the rest of your code, before they ship
  • Publish interactive HTML documentation that opens in any browser, with no install and no license
  • Compare development, test and production, and apply only the changes someone approved
  • Let analysts and new joiners follow relationships and build queries without asking a developer
  • One tool for design, documentation, data and deployment, instead of four
Free Community Edition for everyone on the team No signup, no account 15-day Architect trial in the same installer Your model stays on your machine

Community Edition is free permanently, for as many people as you like — connect to any database, reverse engineer it, and work in the diagrams and the SQL editor. The trial adds the design, documentation and deployment tools on top.

Trusted by teams at

Watch Someone Do It First

See Inside Any of 100+ SQL and NoSQL Databases

All the databases your company uses, in one tool. Connect, and DbSchema reads the schema and draws it as a diagram — cloud, on-premise, or behind an SSH tunnel. It downloads the JDBC driver for you.

access
amazonathena
amazontimestream
apachedrill
apachedruid
apacheignite
apachepinot
apachesolr
auroramysql
aurorapostgresql
azuresql
azuresynapse
cache
cassandra
clickhouse
cockroach
couchbase
cratedb
cubrid
databricks
db2
dremio
duckdb
dynamodb
elasticsearch
enterprisedb
firebolt
googlealloydb
googlebigquery
greenplum
mariadb
marklogic
mongodb
mysql
neo4j
neon
oracle
planetscale
postgresql
redis
redshift
saphana
snowflake
sqlite
sqlserver
supabase
tarantooldb
teradata
tibero
tidb
trino
vertica
voltdb
xata
yellowbrick
yugabytedb

Visual Database Design and ER Diagrams

A schema drawn on a whiteboard stays on the whiteboard. Design it in DbSchema and the same model gives you the SQL, the documentation and the deployment — with everyone following the same naming and type rules.

Give every subsystem its own diagram
Design the Database Schema using Interactive Diagrams

✓ A new developer sees the ten tables their feature touches, not all four hundred.

✓ One diagram per subsystem, showing tables, columns, keys and relationships.

Learn more about Diagrams →

Design once, deploy to any database
Logical & Physical Design

✓ Add a second database engine without designing twice.

✓ One model generates the schema for PostgreSQL, MySQL, MongoDB or any supported engine, with your naming and type rules.

Learn more about Logical Design →

Bring a legacy schema under design
Import DDL Scripts

✓ An old DDL file becomes a model your team can read and change.

✓ Import the SQL, edit it visually, export clean DDL.

Learn more about DDL Import →

Built for the Databases That Actually Matter

DbSchema for large, secure database teams

Thousands of tables. Behind a firewall. Changed by several people who never meet. That is the database that needs careful design, and it is the one DbSchema is built for.

Thousands of tables, still reviewable

✓ Find your way around a schema with thousands of tables.

✓ Group related tables, auto-arrange the layout, keep one diagram per subsystem.

Learn more about Diagrams →

Your database never leaves its network
Design Databases Secure

✓ No cloud account, nothing uploaded, no data-processing agreement.

✓ Connect over SSL/TLS or an SSH tunnel. The model is a file on your own machine or Git server.

ISO-27001 certified

Read about Secure Connections →

Review a schema change like a pull request
Design database schema in a team

✓ Schema changes get reviewed like code, before they ship.

✓ Commit the model to Git, diff and merge branches, and share HTML or PDF documentation with everyone else.

See Git Workflow →

Database Documentation, So the Schema Outlives the People Who Built It

U { } [ ] Read column and table comments by hovering the columns and tables. Zoom with CTRL+whell mouse button, pan by dragging the diagram with the right-mouse button DbSchema Database Designer MySQL Diagram Read schema comments as mouse-over tooltips DbSchema.com © 2026 Wise CodersDbSchema is an universal database designer. DbSchema has a free Community Edition. Group_ Group_ 🔗 Foreign Key fk_orders_customers orders ref customers ( customer_id ) 🔗 Foreign Key fk_orders_customers orders ref customers ( customer_id ) fk_orders_customers 🔗 Foreign Key fk_reviews_customers reviews ref customers ( customer_id ) 🔗 Foreign Key fk_reviews_customers reviews ref customers ( customer_id ) fk_reviews_customers 🔗 Foreign Key fk_reviews_sales reviews ref sales ( customer_id ) 🔗 Foreign Key fk_reviews_sales reviews ref sales ( customer_id ) fk_reviews_sales 🔗 Foreign Key fk_employees_employee_benefits employees ref employee_benefits ( employee_id ) 🔗 Foreign Key fk_employees_employee_benefits employees ref employee_benefits ( employee_id ) fk_employees_employee_benefits 🔗 Foreign Key fk_employees_salaries employees ref salaries ( salary ) 🔗 Foreign Key fk_employees_salaries employees ref salaries ( salary ) fk_employees_salaries ordersTable company.orders 🔑 Pk pk_orders ( order_id ) order_id⧉ order_id * int ↙ order_items( order_id ) ↙ transactions( order_id ) INT🔗 Referred by order_items ( order_id ) Referred by transactions ( order_id ) customer_id⧉ customer_id int ↗ customers( customer_id ) INT🔗 References customers ( customer_id ) order_date⧉ order_date date DATE total_amount⧉ total_amount decimal(15,2) DECIMAL(15,2) status⧉ status varchar(50) VARCHAR(50) shipping_address⧉ shipping_address varchar(255) VARCHAR(255) salesTable company.sales 🔑 Pk pk_sales ( sales_id ) sales_id⧉ sales_id * int INT price⧉ price decimal(10,0) DECIMAL(10,0) discount⧉ discount decimal(10,0) DECIMAL(10,0) 🔍 fk_sales_customers ( customer_id ) customer_id⧉ customer_id int ↗ customers( customer_id ) ↙ reviews( customer_id ) INT🔗 References customers ( customer_id ) Referred by reviews ( customer_id ) reviewsTable company.reviews 🔑 Pk pk_reviews ( review_id ) review_id⧉ review_id * int INT 🔍 Unq unq_reviews_product_id ( product_id ) product_id⧉ product_id int INT 🔍 fk_reviews_customers ( customer_id ) customer_id⧉ customer_id int ↗ customers( customer_id ) ↗ sales( customer_id ) INT🔗 References customers ( customer_id ) References sales ( customer_id ) rating⧉ rating int INT review_date⧉ review_date date DATE comments⧉ comments text TEXT employee_benefitsTable company.employee_benefits 🔑 Pk pk_employee_benefits ( benefit_id ) benefit_id⧉ benefit_id * int INT 🔍 Unq unq_employee_benefits_employee_id ( employee_id ) employee_id⧉ employee_id int ↙ employees( employee_id ) INT🔗 Referred by employees ( employee_id ) benefit_type⧉ benefit_type varchar(50) VARCHAR(50) start_date⧉ start_date date DATE end_date⧉ end_date date DATE employee_projectsTable company.employee_projects 🔑 Pk pk_employee_projects ( employee_id, project_id ) employee_id⧉ employee_id * int INT 🔑 Pk pk_employee_projects ( employee_id, project_id ) 🔍 Unq unq_employee_projects_project_id ( project_id ) project_id⧉ project_id * int ↙ employees( employee_id ) ↙ projects( project_id ) INT🔗 Referred by employees ( employee_id -> project_id ) Referred by projects ( project_id ) role⧉ role varchar(100) VARCHAR(100) start_date⧉ start_date date DATE end_date⧉ end_date date DATE customersTable company.customers 🔑 Pk pk_customers ( customer_id ) customer_id⧉ customer_id * int ↙ orders( customer_id ) ↙ payment_methods( customer_id ) ↙ reviews( customer_id ) ↙ salaries( salary_id ) ↙ sales( customer_id ) INT🔗 Referred by orders ( customer_id ) Referred by payment_methods ( customer_id ) Referred by reviews ( customer_id ) Referred by salaries ( salary_id -> customer_id ) Referred by sales ( customer_id ) first_name⧉ first_name varchar(50) VARCHAR(50) last_name⧉ last_name varchar(50) VARCHAR(50) email⧉ email varchar(100) VARCHAR(100) phone_number⧉ phone_number varchar(20) VARCHAR(20) address⧉ address varchar(255) VARCHAR(255) registration_date⧉ registration_date date DATE employeesTable company.employees ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ This field contains personal informations 🔑 Pk pk_employees ( employee_id ) employee_id⧉ employee_id * int ↗ employee_benefits( employee_id ) ↗ employee_projects( project_id ) ↙ attendance( employee_id ) INT🔗 References employee_benefits ( employee_id ) References employee_projects ( employee_id -> project_id ) Referred by attendance ( employee_id ) 🔍 Unq unq_employees_first_name ( first_name ) first_name⧉ first_name varchar(50) VARCHAR(50) last_name⧉ last_name varchar(50) VARCHAR(50) email⧉ email varchar(100) VARCHAR(100) hire_date⧉ hire_date date DATE 🔍 Unq unq_employees_salary ( salary ) salary⧉ salary decimal(10,2) ↗ salaries( salary ) ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ This column contains personal informations. DECIMAL(10,2)🔗 References salaries ( salary ) department_id⧉ department_id int INT manager_id⧉ manager_id int INT salariesTable company.salaries 🔑 Pk pk_salaries ( salary_id ) salary_id⧉ salary_id * int ↗ customers( customer_id ) ↗ payment_methods( payment_method_id ) INT🔗 References customers ( salary_id -> customer_id ) References payment_methods ( salary_id -> payment_method_id ) 🔍 Unq unq_salaries_employee_id ( employee_id ) employee_id⧉ employee_id int INT 🔍 Unq unq_salaries_salary ( salary ) salary⧉ salary decimal(10,2) ↙ employees( salary ) DECIMAL(10,2)🔗 Referred by employees ( salary ) 🔍 Unq unq_salaries_effective_date ( effective_date ) effective_date⧉ effective_date date ↙ contracts( start_date ) DATE🔗 Referred by contracts ( start_date -> effective_date ) bonus⧉ bonus decimal(10,2) DECIMAL(10,2) 🔍 Unq unq_salaries_customer_id ( customer_id ) customer_id⧉ customer_id int INT

Right now, one person can explain your schema. If they leave, that knowledge goes with them. Publish the schema once as interactive HTML and anyone can read it — new developers, analysts, auditors — without asking.

Onboarding without a senior developer
Generate HTML5 database schema documentation

✓ New developers, analysts and auditors read the schema themselves.

✓ One HTML5 package with diagrams, columns, types and comments. Opens in any browser.

Learn more about Documentation →

Commit the schema with the code
Share the database design in team using GIT

✓ The schema gets a history and an author, like the rest of the project.

✓ Commit, push, diff and merge the model from inside DbSchema, in your existing repository.

Learn more about Git Integration →

Licenses that follow the person, not the machine
Share licenses in team using Floating License Server

✓ Install DbSchema on every machine, pay only for the people using it.

✓ Runs on your own network, for machines with no internet access.

Learn more about Floating Licensing →

Write SQL and Explore Data Without Memorizing the Schema

Explore data and build SQL queries across SQL and NoSQL databases
No SQL Required
Anyone on the team can open a table and read the rows.

Analysts and new developers stop asking the one person who knows how the tables join. DbSchema already knows the relationships — follow them, build the query by dragging, or write SQL with autocomplete that knows your schema.

Let analysts answer their own questions

✓ Follow a customer to their orders and invoices without writing a join.

✓ Uses the real foreign keys, or virtual ones you define.

Learn more about Data Explorer →

Write SQL with the schema in front of you
Edit and execute SQL Queries

✓ Write correct SQL against a schema you did not design.

✓ Autocomplete that knows your tables and columns. Edit results inline, export to CSV, Excel or JSON.

Learn more about SQL Editor →

Get the query right the first time
Visually build queries using the Query Builder

✓ The joins come from the model, not from memory.

✓ Drag tables, joins and filters into place, then read the SQL before it runs.

Learn more about Query Builder →

Never Deploy a Schema Change Nobody Reviewed

Compare and Synchronize the Design Model with the Database
Exists in the Model
Missing in the Database

Production drifts. Somebody added a column by hand in March and told nobody. DbSchema shows exactly how each environment differs from the model, statement by statement, and applies only what someone approved.

See every difference before anything changes
Compare and Synchronize the Design Model with the Database

✓ Spot the drift between development, test and production early.

✓ Apply only the approved changes, or pull the database back into the model.

Learn more about Schema Sync →

Move one reviewed change through every environment
Design the Database Schema, Test it and Delploy it into Production

✓ The change that passed test is the one that reaches production.

✓ The same diff at every stage, with the SQL visible before it runs.

Learn more about Deployment Workflows →

Ship schema changes as reviewable SQL
Generate Database Schema Migration Scripts

✓ The DBA gets a script to review instead of a request to interpret.

✓ Diff two model versions or two environments, and get the migration in the target dialect.

Learn more about Migration Scripts →

The Jobs Your Team Keeps Doing By Hand

Execute Automation Scripts using DbSchema
Set It Up Once
Test data, scheduled jobs and database monitoring that run without you.

Filling a test database. Regenerating documentation after every change. Finding what is locking production. Each takes someone twenty minutes every week — or runs on a schedule and takes nobody any time at all.

Test against data that behaves like production
Generate Test Data

✓ Realistic test data, instead of test1, test2, asdf.

✓ Reusable patterns and regex rules fill related tables in foreign-key order.

Learn more about Test Data →

Chores that run on their own
Automate with Scripts

✓ Regenerate documentation, sync schemas and reload test data on a schedule.

✓ Groovy scripts with full access to the model and the connection.

Learn more about Automation Scripts →

See what your database is doing right now
Monitor database operations

✓ Find the session holding the lock, while it still matters.

✓ Sessions, locks, users and disk usage, in DbSchema or in DbSchemaCLI on a server.

Explore DbSchemaCLI →

Now with AI Assistant

Ask what a table is for. Describe the query you want in plain English. Let it write the column comments nobody has had time for. The AI reads your own schema, so its answers use your table names. On any paid edition you can use your own API key, so your schema goes only to the model you chose.

See Release Notes

DbSchema AI assistant for database design and SQL work

See your own schema as a diagram in about ten minutes

Download, connect, and DbSchema draws your database. Free Community Edition for the whole team, no signup, and a 15-day Architect trial in the same installer — nothing uploaded, nothing to cancel.