/staruml-ddl

StarUML 3 Extension for DDL Generation

Primary LanguageJavaScriptMIT LicenseMIT

DDL Extension for StarUML

This extension for StarUML (http://staruml.io) support to generate DDL (Data Definition Language) from ERD. Install this extension from Extension Manager of StarUML.

How to use

  1. Click the menu (Tools > DDL > Generate DDL...)
  2. Select a data model that will be generated to DDL.
  3. Save the generated DDL to a file.

Generation rules

Belows are the rules to convert from ERD elements to DDL.

  • All entities and columns are converted to create table statements as follow:
CREATE TABLE entity1 (
    col1 INTEGER,
    col2 VARCHAR(20),
    ...
);
  • Primary keys are converted as follow:
CREATE TABLE entity1 (
    pk1 INTEGER,
    pk2 VARCHAR(10),
    ...
    PRIMARY KEY (pk1, pk2, ...)
);
  • Not-nullable columns are converted as follow:
CREATE TABLE entity1 (
    col1 VARCHAR(20) NOT NULL,
    ...
);
  • Unique columns are converted as follow:
CREATE TABLE entity1 (
    ...
    UNIQUE (col1, col2, ...)
);
  • Foreign keys are converted as follow:
CREATE TABLE entity1 (
    fk1 INTEGER,
    ...
);
...

ALTER TABLE entity1 ADD FOREIGN KEY (fk1) REFERENCES entity2(col1);
  • If Quote Identifiers option is selected, all identifiers will be surrounded by a backquote character.
CREATE TABLE `entity1` (
    `col1` INTEGER,
    `col2` VARCHAR(20),
    ...
);
  • If Drop Tables option is selected, drop table statements will be included.

(MySQL selected in DBMS option)

SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS entity1;
...
SET FOREIGN_KEY_CHECKS = 1;

CREATE TABLE entity1 (...);
...

(Oracle selected in DBMS option)

DROP TABLE entity1 CASCADE CONSTRAINTS;`
...

CREATE TABLE entity1 (...);
...
  • If Generate Comments option is selected, COMMENT statements will be included, both in columns and tables.
CREATE TABLE `entity1` (
    `col1` INTEGER COMMENT 'Comment 1',
    `col2` VARCHAR(20) COMMENT 'Comment 2',
    ...
) COMMENT='Table comment';
  • If using MySQL, the selected engine will be added to every CREATE TABLE statement.
CREATE TABLE `entity1` (
    `col1` INTEGER,
    `col2` VARCHAR(20),
    ...
) ENGINE=InnoDB;
  • If an auto_increment tag is added to an entity column with the true value, an AUTO_INCREMENT statement will be included in that column.
CREATE TABLE `entity1` (
    `col1` INTEGER AUTO_INCREMENT,
    ...
);
  • If a default tag is added to an entity column, a DEFAULT statement will be included in that column, with the tag value.
CREATE TABLE `entity1` (
    `col1` INTEGER DEFAULT '1',
    `col2` VARCHAR(20) DEFAULT 'Test',
    ...
);

Contributions

Any contributions are welcome. If you find a bug or have a suggestion, please post as an issue.