DbSchema PRO Features

Connect to any Database & Reverse Engineer the Schema

Start a new model by reverse-engineering the schema from the database. The model contains a database-independent image of the schema.
Documentation

  1. 1
    Connect to any Database
    Using JDBC drivers you can connect to any database and reverse engineer the schema.
  2. 2
    Connect to Cloud Databases

    In the cloud database console, you will find the JDBC URL. In DbSchema tick the 'I know the JDBC URL' checkbox and copy the URL.

  1. 3
    Automatic JDBC Driver Download

    Choosing a database DbSchema will automatically download the JDBC driver from the driver repository. This requires Internet connectivity.

  2. 4
    SSH Connections

    Work on your database through secured connections.

Reverse Engineer the Schema

Logical & Physical Design

The logical design is a database-independent design, with entities and many-to-many relations. From the logical design you can generate physical design.

  1. 1
    Use Different Relations

    In the logical design, you can create identifying, non-identifying, one-to-one or many-to-many relations. In the physical design, the foreign key cardinality is determined by the referring column uniqueness and mandatory properties.

  2. 2
    Use Shapes

    Can add different shapes and arrows to the diagram.

  1. 3
    Use Conversion Rules

    The conversion of the logical design to physical can use convertors to map the data types, attribute and entity names, default values, etc.

  2. 4
    Share the Design in a Team

    The logical design is saved to the model file and can be shared in a team.

Database Logical Design

Interactive Diagrams

DbSchema uses diagrams to interact with the schema. For understanding the schema better, create multiple diagrams, focused on a specific part of the schema, with the same or different tables.
Documentation

  1. 1
    Edit Tables in Diagram

    Double-click tables directly in a diagram to edit.

  2. 2
    Save the Diagrams to the Project File

    Diagrams will be saved and reopen when restarting DbSchema.

  3. 3
    Reopen the Design Without Database Connectivity

    You can edit the DbSchema model without being connected to the database (offline).

  4. 4
    Read Column Type and Comments as Tooltip

    Hover the mouse over columns for the tooltip to show.

  5. 5
    Show/Hide Column Data Type

    Menu buttons allow hiding column data type for a more concise representation.

  1. 6
    Draw Foreign Key Lines Pointing to Columns

    Choose to draw the foreign key lines from table to table or from column.

  2. 7
    Create Foreign Keys by Drag & Drop

    Drag&drop one column over a primary key column.

  3. 8
    Change Foreign Key Notation

    Represent the foreign key using different notations: Idefix, Barker, etc.

  4. 9
    Create Callouts

    You can add diagram comments as callouts.

  5. 10
    Create Groups of Tables

    You can group the tables, and choose a color for each group.

HTML5 Documentation

HTML5 Documentation

Add comments to tables, columns, and foreign keys and generate interactive HTML5 documentation.
Documentation

  1. 1
    Read table and column comments as mouse-over tooltips

    Read the comments by hovering the mouse over the table and columns.

  2. 2
    Diagram vector images

    Vector images are small-size compared to bitmap png or gif images.

  1. 3
    Publish the documentation on the web

    Documentation files are in HTML5 format and can be published on the web.

  2. 4
    Automate documentation generate task

    DbSchema includes automation scripts that can help to generate the HTML5 files.

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 Organization Layout Interactive docs: mouse-over comments, zoom and pan DbSchema.com © 2025-02-12 Wise CodersDbSchema is an universal database designer. DbSchema has a free Community Edition. 🔗 Foreign Key FK_DEPARTMENT EMPLOYEES ref DEPARTMENTS ( DEPARTMENT_ID ) 🔗 Foreign Key FK_DEPARTMENT EMPLOYEES ref DEPARTMENTS ( DEPARTMENT_ID ) DEPARTMENT_ID 🔗 Foreign Key FK_BENEFIT EMPLOYEE_BENEFITS ref BENEFITS ( BENEFIT_ID ) 🔗 Foreign Key FK_BENEFIT EMPLOYEE_BENEFITS ref BENEFITS ( BENEFIT_ID ) BENEFIT_ID 🔗 Foreign Key FK_EMPLOYEE_BENEFIT EMPLOYEE_BENEFITS ref EMPLOYEES ( EMPLOYEE_ID ) 🔗 Foreign Key FK_EMPLOYEE_BENEFIT EMPLOYEE_BENEFITS ref EMPLOYEES ( EMPLOYEE_ID ) EMPLOYEE_ID 🔗 Foreign Key FK_EMPLOYEE_INSURANCE EMPLOYEE_INSURANCES ref EMPLOYEES ( EMPLOYEE_ID ) 🔗 Foreign Key FK_EMPLOYEE_INSURANCE EMPLOYEE_INSURANCES ref EMPLOYEES ( EMPLOYEE_ID ) EMPLOYEE_ID 🔗 Foreign Key FK_INSURANCE EMPLOYEE_INSURANCES ref INSURANCES ( INSURANCE_ID ) 🔗 Foreign Key FK_INSURANCE EMPLOYEE_INSURANCES ref INSURANCES ( INSURANCE_ID ) INSURANCE_ID 🔗 Foreign Key FK_INVOICE_ORDER INVOICES ref ORDERS ( ORDER_ID ) 🔗 Foreign Key FK_INVOICE_ORDER INVOICES ref ORDERS ( ORDER_ID ) ORDER_ID 🔗 Foreign Key FK_JOBS_EMPLOYEES JOBS ref EMPLOYEES ( JOB_ID ) 🔗 Foreign Key FK_JOBS_EMPLOYEES JOBS ref EMPLOYEES ( JOB_ID ) JOB_ID 🔗 Foreign Key FK_MEETING_LOCATION MEETINGS ref LOCATIONS ( LOCATION_ID ) 🔗 Foreign Key FK_MEETING_LOCATION MEETINGS ref LOCATIONS ( LOCATION_ID ) LOCATION_ID 🔗 Foreign Key FK_CUSTOMER ORDERS ref CUSTOMERS ( CUSTOMER_ID ) 🔗 Foreign Key FK_CUSTOMER ORDERS ref CUSTOMERS ( CUSTOMER_ID ) CUSTOMER_ID 🔗 Foreign Key FK_ORDER ORDER_DETAILS ref ORDERS ( ORDER_ID ) 🔗 Foreign Key FK_ORDER ORDER_DETAILS ref ORDERS ( ORDER_ID ) ORDER_ID 🔗 Foreign Key FK_EMPLOYEE PROJECT_ASSIGNMENTS ref EMPLOYEES ( EMPLOYEE_ID ) 🔗 Foreign Key FK_EMPLOYEE PROJECT_ASSIGNMENTS ref EMPLOYEES ( EMPLOYEE_ID ) EMPLOYEE_ID 🔗 Foreign Key FK_PROJECT PROJECT_ASSIGNMENTS ref PROJECTS ( PROJECT_ID ) 🔗 Foreign Key FK_PROJECT PROJECT_ASSIGNMENTS ref PROJECTS ( PROJECT_ID ) PROJECT_ID 🔗 Foreign Key FK_PRODUCT SUPPLIER_PRODUCTS ref PRODUCTS ( PRODUCT_ID ) 🔗 Foreign Key FK_PRODUCT SUPPLIER_PRODUCTS ref PRODUCTS ( PRODUCT_ID ) PRODUCT_ID 🔗 Foreign Key FK_TRAINING_EMPLOYEE EMPLOYEE_TRAINING ref EMPLOYEES ( EMPLOYEE_ID ) 🔗 Foreign Key FK_TRAINING_EMPLOYEE EMPLOYEE_TRAINING ref EMPLOYEES ( EMPLOYEE_ID ) EMPLOYEE_ID 🔗 Foreign Key FK_PROGRAM EMPLOYEE_TRAINING ref TRAINING_PROGRAMS ( PROGRAM_ID ) 🔗 Foreign Key FK_PROGRAM EMPLOYEE_TRAINING ref TRAINING_PROGRAMS ( PROGRAM_ID ) PROGRAM_ID 🔗 Foreign Key FK_INVOICE PAYMENTS ref INVOICES ( INVOICE_ID ) 🔗 Foreign Key FK_INVOICE PAYMENTS ref INVOICES ( INVOICE_ID ) INVOICE_ID BENEFITSTable ORGANIZATION.BENEFITS 🔑 Pk SYS_C008450 ( BENEFIT_ID ) BENEFIT_ID⧉ BENEFIT_ID * number(10) ↙ EMPLOYEE_BENEFITS( BENEFIT_ID ) 🔗 Referred by EMPLOYEE_BENEFITS ( BENEFIT_ID ) BENEFIT_NAME⧉ BENEFIT_NAME * varchar2(100) t DESCRIPTION⧉ DESCRIPTION varchar2(300) t COST⧉ COST number(10,2) # CUSTOMERSTable ORGANIZATION.CUSTOMERS 🔑 Pk SYS_C008389 ( CUSTOMER_ID ) CUSTOMER_ID⧉ CUSTOMER_ID * number(10) ↙ CONTRACTS( CUSTOMER_ID ) ↙ ORDERS( CUSTOMER_ID ) 🔗 Referred by CONTRACTS ( CUSTOMER_ID ) Referred by ORDERS ( CUSTOMER_ID ) CUSTOMER_NAME⧉ CUSTOMER_NAME * varchar2(150) t CONTACT_NAME⧉ CONTACT_NAME varchar2(100) t PHONE⧉ PHONE varchar2(20) t EMAIL⧉ EMAIL varchar2(100) t ADDRESS⧉ ADDRESS varchar2(200) t DEPARTMENTSTable ORGANIZATION.DEPARTMENTS 🔑 Pk SYS_C008371 ( DEPARTMENT_ID ) DEPARTMENT_ID⧉ DEPARTMENT_ID * number(10) ↙ EMPLOYEES( DEPARTMENT_ID ) 🔗 Referred by EMPLOYEES ( DEPARTMENT_ID ) DEPARTMENT_NAME⧉ DEPARTMENT_NAME * varchar2(100) t LOCATION⧉ LOCATION varchar2(150) t MANAGER_ID⧉ MANAGER_ID number(10) # EMPLOYEESTable ORGANIZATION.EMPLOYEES 🔑 Pk SYS_C008374 ( EMPLOYEE_ID ) EMPLOYEE_ID⧉ EMPLOYEE_ID * number(10) ↙ ASSET_ASSIGNMENTS( EMPLOYEE_ID ) ↙ EMPLOYEE_BENEFITS( EMPLOYEE_ID ) ↙ EMPLOYEE_INSURANCES( EMPLOYEE_ID ) ↙ EMPLOYEE_TRAINING( EMPLOYEE_ID ) ↙ MEETING_PARTICIPANTS( EMPLOYEE_ID ) ↙ PERFORMANCE_REVIEWS( EMPLOYEE_ID ) ↙ PROJECT_ASSIGNMENTS( EMPLOYEE_ID ) 🔗 Referred by ASSET_ASSIGNMENTS ( EMPLOYEE_ID ) Referred by EMPLOYEE_BENEFITS ( EMPLOYEE_ID ) Referred by EMPLOYEE_INSURANCES ( EMPLOYEE_ID ) Referred by EMPLOYEE_TRAINING ( EMPLOYEE_ID ) Referred by MEETING_PARTICIPANTS ( EMPLOYEE_ID ) Referred by PERFORMANCE_REVIEWS ( EMPLOYEE_ID ) Referred by PROJECT_ASSIGNMENTS ( EMPLOYEE_ID ) FIRST_NAME⧉ FIRST_NAME varchar2(50) t LAST_NAME⧉ LAST_NAME * varchar2(50) t 🔍 Unq SYS_C008375 ( EMAIL ) EMAIL⧉ EMAIL varchar2(100) t PHONE_NUMBER⧉ PHONE_NUMBER varchar2(20) t HIRE_DATE⧉ HIRE_DATE * date d 🔍 Unq UNQ_EMPLOYEES_JOB_ID ( JOB_ID ) JOB_ID⧉ JOB_ID number(10) ↙ JOBS( JOB_ID ) 🔗 Referred by JOBS ( JOB_ID ) DEPARTMENT_ID⧉ DEPARTMENT_ID number(10) ↗ EMPLOYEES( DEPARTMENT_ID ) 🔗 References DEPARTMENTS ( DEPARTMENT_ID ) EMPLOYEE_BENEFITSTable ORGANIZATION.EMPLOYEE_BENEFITS 🔑 Pk SYS_C008454 ( EMPLOYEE_BENEFIT_ID ) EMPLOYEE_BENEFIT_ID⧉ EMPLOYEE_BENEFIT_ID * number(10) # EMPLOYEE_ID⧉ EMPLOYEE_ID * number(10) ↗ EMPLOYEE_BENEFITS( EMPLOYEE_ID ) 🔗 References EMPLOYEES ( EMPLOYEE_ID ) BENEFIT_ID⧉ BENEFIT_ID * number(10) ↗ EMPLOYEE_BENEFITS( BENEFIT_ID ) 🔗 References BENEFITS ( BENEFIT_ID ) START_DATE⧉ START_DATE * date d END_DATE⧉ END_DATE date d EMPLOYEE_INSURANCESTable ORGANIZATION.EMPLOYEE_INSURANCES 🔑 Pk SYS_C008462 ( EMPLOYEE_INSURANCE_ID ) EMPLOYEE_INSURANCE_ID⧉ EMPLOYEE_INSURANCE_ID * number(10) # EMPLOYEE_ID⧉ EMPLOYEE_ID * number(10) ↗ EMPLOYEE_INSURANCES( EMPLOYEE_ID ) 🔗 References EMPLOYEES ( EMPLOYEE_ID ) INSURANCE_ID⧉ INSURANCE_ID * number(10) ↗ EMPLOYEE_INSURANCES( INSURANCE_ID ) 🔗 References INSURANCES ( INSURANCE_ID ) EFFECTIVE_DATE⧉ EFFECTIVE_DATE * date d EXPIRATION_DATE⧉ EXPIRATION_DATE date d INSURANCESTable ORGANIZATION.INSURANCES 🔑 Pk SYS_C008458 ( INSURANCE_ID ) INSURANCE_ID⧉ INSURANCE_ID * number(10) ↙ EMPLOYEE_INSURANCES( INSURANCE_ID ) 🔗 Referred by EMPLOYEE_INSURANCES ( INSURANCE_ID ) INSURANCE_NAME⧉ INSURANCE_NAME * varchar2(150) t PROVIDER⧉ PROVIDER varchar2(150) t COVERAGE_AMOUNT⧉ COVERAGE_AMOUNT number(15,2) # PREMIUM⧉ PREMIUM number(15,2) # INVOICESTable ORGANIZATION.INVOICES 🔑 Pk SYS_C008411 ( INVOICE_ID ) INVOICE_ID⧉ INVOICE_ID * number(10) ↙ PAYMENTS( INVOICE_ID ) 🔗 Referred by PAYMENTS ( INVOICE_ID ) ORDER_ID⧉ ORDER_ID * number(10) ↗ INVOICES( ORDER_ID ) 🔗 References ORDERS ( ORDER_ID ) INVOICE_DATE⧉ INVOICE_DATE * date d TOTAL_AMOUNT⧉ TOTAL_AMOUNT number(15,2) # JOBSTable ORGANIZATION.JOBS 🔑 Pk SYS_C008378 ( JOB_ID ) JOB_ID⧉ JOB_ID * number(10) ↗ JOBS( JOB_ID ) 🔗 References EMPLOYEES ( JOB_ID ) JOB_TITLE⧉ JOB_TITLE * varchar2(100) t MIN_SALARY⧉ MIN_SALARY number(10,2) # MAX_SALARY⧉ MAX_SALARY number(10,2) # LOCATIONSTable ORGANIZATION.LOCATIONS 🔑 Pk SYS_C008380 ( LOCATION_ID ) LOCATION_ID⧉ LOCATION_ID * number(10) ↙ ASSETS( LOCATION_ID ) ↙ MEETINGS( LOCATION_ID ) 🔗 Referred by ASSETS ( LOCATION_ID ) Referred by MEETINGS ( LOCATION_ID ) STREET_ADDRESS⧉ STREET_ADDRESS varchar2(150) t CITY⧉ CITY * varchar2(100) t STATE⧉ STATE varchar2(100) t POSTAL_CODE⧉ POSTAL_CODE varchar2(20) t COUNTRY⧉ COUNTRY varchar2(100) t MEETINGSTable ORGANIZATION.MEETINGS 🔑 Pk SYS_C008434 ( MEETING_ID ) MEETING_ID⧉ MEETING_ID * number(10) ↙ MEETING_PARTICIPANTS( MEETING_ID ) 🔗 Referred by MEETING_PARTICIPANTS ( MEETING_ID ) MEETING_TITLE⧉ MEETING_TITLE * varchar2(150) t MEETING_DATE⧉ MEETING_DATE * date d DURATION⧉ DURATION number(5) # LOCATION_ID⧉ LOCATION_ID number(10) ↗ MEETINGS( LOCATION_ID ) 🔗 References LOCATIONS ( LOCATION_ID ) ORDERSTable ORGANIZATION.ORDERS 🔑 Pk SYS_C008392 ( ORDER_ID ) ORDER_ID⧉ ORDER_ID * number(10) ↙ INVOICES( ORDER_ID ) ↙ ORDER_DETAILS( ORDER_ID ) 🔗 Referred by INVOICES ( ORDER_ID ) Referred by ORDER_DETAILS ( ORDER_ID ) CUSTOMER_ID⧉ CUSTOMER_ID * number(10) ↗ ORDERS( CUSTOMER_ID ) 🔗 References CUSTOMERS ( CUSTOMER_ID ) ORDER_DATE⧉ ORDER_DATE * date d STATUS⧉ STATUS varchar2(50) t TOTAL_AMOUNT⧉ TOTAL_AMOUNT number(15,2) # ORDER_DETAILSTable ORGANIZATION.ORDER_DETAILS 🔑 Pk SYS_C008397 ( ORDER_DETAIL_ID ) ORDER_DETAIL_ID⧉ ORDER_DETAIL_ID * number(10) # ORDER_ID⧉ ORDER_ID * number(10) ↗ ORDER_DETAILS( ORDER_ID ) 🔗 References ORDERS ( ORDER_ID ) PRODUCT_ID⧉ PRODUCT_ID * number(10) # QUANTITY⧉ QUANTITY * number(10) # PRICE_PER_UNIT⧉ PRICE_PER_UNIT number(10,2) # PRODUCTSTable ORGANIZATION.PRODUCTS 🔑 Pk SYS_C008401 ( PRODUCT_ID ) PRODUCT_ID⧉ PRODUCT_ID * number(10) ↙ SUPPLIER_PRODUCTS( PRODUCT_ID ) 🔗 Referred by SUPPLIER_PRODUCTS ( PRODUCT_ID ) PRODUCT_NAME⧉ PRODUCT_NAME * varchar2(150) t DESCRIPTION⧉ DESCRIPTION varchar2(500) t PRICE⧉ PRICE * number(10,2) # STOCK_QUANTITY⧉ STOCK_QUANTITY number(10) # PROJECTSTable ORGANIZATION.PROJECTS 🔑 Pk SYS_C008382 ( PROJECT_ID ) PROJECT_ID⧉ PROJECT_ID * number(10) ↙ PROJECT_ASSIGNMENTS( PROJECT_ID ) 🔗 Referred by PROJECT_ASSIGNMENTS ( PROJECT_ID ) PROJECT_NAME⧉ PROJECT_NAME * varchar2(150) t START_DATE⧉ START_DATE date d END_DATE⧉ END_DATE date d BUDGET⧉ BUDGET number(15,2) # PROJECT_ASSIGNMENTSTable ORGANIZATION.PROJECT_ASSIGNMENTS 🔑 Pk SYS_C008385 ( ASSIGNMENT_ID ) ASSIGNMENT_ID⧉ ASSIGNMENT_ID * number(10) # PROJECT_ID⧉ PROJECT_ID * number(10) ↗ PROJECT_ASSIGNMENTS( PROJECT_ID ) 🔗 References PROJECTS ( PROJECT_ID ) EMPLOYEE_ID⧉ EMPLOYEE_ID * number(10) ↗ PROJECT_ASSIGNMENTS( EMPLOYEE_ID ) 🔗 References EMPLOYEES ( EMPLOYEE_ID ) ASSIGNED_DATE⧉ ASSIGNED_DATE date d ROLE⧉ ROLE varchar2(100) t SUPPLIER_PRODUCTSTable ORGANIZATION.SUPPLIER_PRODUCTS 🔑 Pk SYS_C008406 ( SUPPLIER_PRODUCT_ID ) SUPPLIER_PRODUCT_ID⧉ SUPPLIER_PRODUCT_ID * number(10) # SUPPLIER_ID⧉ SUPPLIER_ID * number(10) ↗ SUPPLIER_PRODUCTS( SUPPLIER_ID ) 🔗 References SUPPLIERS ( SUPPLIER_ID ) PRODUCT_ID⧉ PRODUCT_ID * number(10) ↗ SUPPLIER_PRODUCTS( PRODUCT_ID ) 🔗 References PRODUCTS ( PRODUCT_ID ) PRICE⧉ PRICE number(10,2) # TRAINING_PROGRAMSTable ORGANIZATION.TRAINING_PROGRAMS 🔑 Pk SYS_C008426 ( PROGRAM_ID ) PROGRAM_ID⧉ PROGRAM_ID * number(10) ↙ EMPLOYEE_TRAINING( PROGRAM_ID ) 🔗 Referred by EMPLOYEE_TRAINING ( PROGRAM_ID ) PROGRAM_NAME⧉ PROGRAM_NAME * varchar2(150) t START_DATE⧉ START_DATE date d END_DATE⧉ END_DATE date d TRAINER⧉ TRAINER varchar2(100) t EMPLOYEE_TRAININGTable ORGANIZATION.EMPLOYEE_TRAINING 🔑 Pk SYS_C008429 ( EMPLOYEE_TRAINING_ID ) EMPLOYEE_TRAINING_ID⧉ EMPLOYEE_TRAINING_ID * number(10) # PROGRAM_ID⧉ PROGRAM_ID * number(10) ↗ EMPLOYEE_TRAINING( PROGRAM_ID ) 🔗 References TRAINING_PROGRAMS ( PROGRAM_ID ) EMPLOYEE_ID⧉ EMPLOYEE_ID * number(10) ↗ EMPLOYEE_TRAINING( EMPLOYEE_ID ) 🔗 References EMPLOYEES ( EMPLOYEE_ID ) COMPLETION_STATUS⧉ COMPLETION_STATUS varchar2(50) t PAYMENTSTable ORGANIZATION.PAYMENTS 🔑 Pk SYS_C008415 ( PAYMENT_ID ) PAYMENT_ID⧉ PAYMENT_ID * number(10) # INVOICE_ID⧉ INVOICE_ID * number(10) ↗ PAYMENTS( INVOICE_ID ) 🔗 References INVOICES ( INVOICE_ID ) PAYMENT_DATE⧉ PAYMENT_DATE * date d AMOUNT⧉ AMOUNT number(15,2) # PAYMENT_METHOD⧉ PAYMENT_METHOD varchar2(50) t

Schema Synchronization

DbSchema model contains its own image of the schema, independent from the database. Connecting to another database won't change the model schema unless you choose to refresh it from the database.
Documentation

  1. 1
    Deploy the Schema on Multiple Databases

    Connecting to another database you can compare the model schemas with the database, and choose to: commit the differences in the database, generate SQL scripts or merge the differences in the current model.

  2. 2
    Save the Model Schema to Project File

    The model will be saved to the project file. When restarting DbSchema, the project file will reopen.

  3. 3
    Open the XML Project File with a Text Editor

    The project file is in XML format. You can open it with any text editor.

  1. 4
    Share the Project File in a Team

    You can use GIT to share the file in a team.

  2. 5
    Generate Schema Migration Scripts

    You can compare two project files holding different versions of the same schema and generate SQL migration scripts.

  3. 6
    Convert Schemas

    Convert the schema to a different database.

  4. 7
    Generate SQL Scripts

    You can generate SQL schema creation scripts.

Schema Synchronization

Visual Query Builder

Build SQL Queries visually without having to write any line of code. Add and edit tables with a simple click.
Documentation

  1. 1
    Join Following the Foreign Keys

    Join tables following normal or virtual foreign keys.

  2. 2
    Join Clauses

    Choose between LEFT, OUTER and EXISTS joins

  1. 3
    Group By Conditions

    Make use of COUNT(*), AVG(), SUM()

  2. 4
    Where Filters

    Set filters on columns

Visual Query Builder

Relational Data Editor

The Relational Data Editor can visually explore data from multiple tables. You can cascade into further tables via foreign keys or virtual foreign keys. There is no limit to how many tables can be opened at once.
Documentation

  1. 1
    Cascade Into Multiple Tables

    View data from multiple tables at one time based on normal or virtual foreign keys.

  2. 2
    Edit Records with One Click

    Double click any cell to edit its value.

  3. 3
    Pick Up Where You Left Off

    Your data editor will be saved in the model file so you can access it next time you start DbSchema.

  1. 4
    Make Your View More Relevant

    Apply filters and data sorting mechanisms to explore data more efficiently.

  2. 5
    Create Virtual Foreign Keys

    If your schema is missing foreign keys, create virtual foreign keys. They also can be used in relational data browsing.

  3. 6
    View Images stored in the Database

    Easily access BLOB or CLOB files in DbSchema.

Relational Data Editor

SQL Editor

The SQL editor features syntax highlighting, query and script execution, graphical query explanation plan, and the option to save results as CSV or XLSX files.
Documentation

  1. 1
    Text auto-completion

    The editor can complete table and column names, using the Ctrl-Blank key combination.

  2. 2
    Syntax Highlight

    The editor works fine on large and very large files, with syntax high-lighting active.

  3. 3
    Execute SQL Queries

    Execute SQL Queries and show the result as a table.

  1. 4
    Execute Scripts

    Executing scripts will show the result as a text file.

  2. 5
    Save result to CSV or XLSX files

    Export the query result to external files.

  3. 6
    Graphical Query Execution Plan

    Active for many databases, will show the query execution plan.

SQL Editor

CSV Editor for Large Files

The CSV Editor is available in both, the Free and Pro DbSchema editions.
Documentation

  1. 1
    Open large files

    The editor can open Gbytes large files. The computer memory should be 1.5 larger as the file size.

  2. 2
    Auto-Detect Encoding

    The editor does encoding auto-detection.

  3. 3
    Filter

    Filter columns values. The filtering works for numeric, date and boolean columns.

  1. 4
    Sort

    Sort column values. If a column is date or numeric, the editor sorts it correctly.

  2. 5
    Save under a different format

    The CSV content can be saved using different fields and records separators.

SQL Editor

Random Data Generator

Generate test data in your database using configurable, random, and reverse regular expression patterns. A repository of predefined patterns will help you find the best data pattern for each column.
Documentation

  1. 1
    Predefined Patterns

    DbSchema offers a wide variety of predefined patterns.

  2. 2
    Auto-Fill Patterns

    DbSchema analyzes the column name and anticipates a generator pattern.

  1. 3
    Reverse regular expressions

    Beside predefined patterns you can use reverse regular expressions to produce random text.

  2. 4
    Related patterns

    Patterns can relate one to another, and compose certain combinations.

Data Generator

Data Importer

Import data from various files into the database.
Documentation

  1. 1
    Support CSV, XML, XLS, XLSX

    The most common CSV and Excel files are supported.

  1. 2
    Use Batch processing

    Batch processing speeds up the import process.

Data Importer

MongoDB Validation Schema

MongoDB can implement a schema using validation rules. This are JSON description of the MongoDB collections. DbSchema is capable of creating collections and implement the validation rules.
Documentation

  1. 1
    Design MongoDB Validation Rules

    Design a collection fields, including objects and arrays, and DbSchema will create the collection and the validation rules for you.

  2. 2
    Document MongoDB Databases

    Add comments to collections and fields and generate HTML5 documentation. The comments will be saved in the database as part of the validation rule.

  3. 3
    Relational Data Editor

    The Relational Data Editor for MongoDB and using virtual relations can explore data from multiple collections.

  1. 4
    Virtual Relations

    Similar to Virtual Foreign Keys, Virtual Relations will let you figure out fields pointing to other collections. Virtual relations are used in the Relational Data Editor.

  2. 5
    Compare the Schema with Other MongoDB Databases

    Connect to different MongoDB databases and compare the current model with the connected database.

Diagrams for MongoDB

Automation Scripts

DbSchema can execute Groovy or Java Scripts with direct access to the DbSchema API. This will help to solve different tasks without visual interaction.
Documentation

  1. 1
    Automate Reverse Engineering of the Database Structure

    Reverse engineering can be started from a Groovy script.

  2. 2
    Generate HTML5 Documentation

    Write scripts that generate HTML5 or PDF documentation.

  1. 3
    Automate Schema Synchronization

    Automatically synchronize or deploy a schema on different databases.

  2. 4
    Convert Model Files From Other Tools

    Using scripts, you can import schema models from other tools.

DbSchema Process Automation

Virtual Foreign Keys

Foreign keys are used to ensure data accuracy and consistency in the database. If the database schema is missing foreign keys, create virtual foreign keys that will be saved to the project file.
Documentation

  1. 1
    Virtual Foreign Keys help to understand the Schema

    They are a visual representation of the relationship between the table columns.

  2. 2
    Will be saved to model file

    Virtual foreign keys don't get lost! They will be saved to the model file.

  1. 3
    Are used in Relational Data Editor

    Use virtual foreign keys to explore data from multiple tables at one time

  2. 4
    Are used in Visual Query Builder

    You can join tables in the Query Builder using virtual foreign keys.

Virtual Foreign Keys helps to understand the database structure

DbSchema Themes

DbSchema integrates multiple themes so you can personalize your interface.

DbSchema Dark Theme

DbSchemaCLI - Universal Command-Line Client

DbSchemaCLI is a command-line client, capable to connect to multiple databases simultaneously, transfer data, execute monitoring scripts, send reports via email.
Read more

  1. 1
    Connect to Multiple Databases

    Did you have two or more databases with the same schema? Using DbSchemaCLI, you can connect and query all of them at one time.

  2. 2
    Transfer Data

    DbSchemaCLI can transfer data between different databases, on multiple threads, with customizable chunk size. The transfer is optimized to reduce the table locking during the transfer.

  3. 3
    Java Groovy Scripts

    SQL is not always enough for certain database tasks. With DbSchemaCLI, you can use Java Groovy to implement more complex tasks.

  1. 4
    Custom Commands

    DbSchemaCLI facilitates implementing custom commands, for example: 'disk usage' or 'standby status' to monitor multiple databases at a time.

  2. 5
    Schedule Scripts

    Schedule database monitoring scripts or end-user reports for periodical execution.

  3. 6
    Script Error Reporting

    You can configure admin emails to receive alarms when any of the scheduled scripts fail.