This extension for StarUML (http://staruml.io) support to generate DDL (Data Definition Language) from ERD. Install this extension from Extension Manager of StarUML.
- Click the menu (
Tools > DDL > Generate DDL...
) - Select a data model that will be generated to DDL.
- Save the generated DDL to a file.
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 thetrue
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',
...
);
Any contributions are welcome. If you find a bug or have a suggestion, please post as an issue.