Холст и текст вместе
- Связи мышью от поля к полю
- DBML и PlantUML, если нужен текст
- Отмена любого действия
Визуальный редактор ER-диаграмм
Вам не нужно ничего писать: перетаскивайте таблицы и ведите связи мышью. Реляционные базы, коллекции MongoDB и ключи Redis — в одном окне. А если привычнее текстом — рядом DBML и PlantUML, правки идут в обе стороны. Импорт и экспорт SQL, картинки и PDF — прямо в браузере, без регистрации.
Открыть редактор Посмотреть пример
Возможности
Рисуйте мышью или пишите текстом — это один документ: перетаскивание таблицы меняет код, а правка кода сразу видна на холсте.
MongoDB и Redis
Коллекция, вложенные документы и массивы объектов — отдельными карточками с ромбом вложения; ключ Redis показывает тип значения, время жизни и то, из какого поля собрано его имя. Правится всё так же мышью, а рядом лежит текст.
Вставьте DBML или PlantUML либо импортируйте дамп SQL. Новая схема начинается с выбора типа базы: реляционная, документная или ключ-значение.
Двигайте таблицы, ведите связи, собирайте области во фреймы, красьте по смыслу.
Экспорт в SQL для миграции, картинка для документации, PDF для распечатки.
Схема хранится текстом, поэтому её можно держать рядом с кодом и смотреть изменения в любом diff.
MariaDB читается как MySQL. Oracle пока не поддерживаем. Схемы MongoDB и Redis рисуются и правятся так же, как реляционные, но SQL для них не выгружается.
Схема как текст: связь описывается прямо в поле — [ref: > authors.id].
Table authors {
id bigint [pk, increment]
full_name varchar(200) [not null]
}
Table books {
id bigint [pk, increment]
title varchar(500) [not null]
author_id bigint [ref: > authors.id]
price numeric(10,2) [default: 0]
}
Сущности и связь линией: authors ||--o{ books. Оформление и легенду редактор добавляет сам.
@startuml
entity authors {
* id : bigint <<PK>>
--
* full_name : varchar(200)
}
entity books {
* id : bigint <<PK>>
author_id : bigint <<FK>>
--
* title : varchar(500)
price : numeric(10,2)
}
authors ||--o{ books
@enduml
Расширение DBML от DBSchema: Collection — коллекция, Object — вложенный
документ, поля в фигурных скобках лежат внутри. Другие редакторы DBML такой файл не откроют, поэтому
рядом есть экспорт в обычный плоский DBML.
Collection users {
_id ObjectId
email String [not null]
address {
city String
zip String
}
orders Order[]
indexes {
email [unique]
createdAt [ttl: '30d']
}
}
Object Order {
sku String [not null]
qty Int [not null]
}
Key — шаблон имени ключа, type — тип значения, ttl — время
жизни. Связь показывает, из какого поля собирают имя другого ключа.
Key "user:{uid}" [type: hash] {
email String
name String
}
Key "session:{sid}" [type: hash, ttl: 30m] {
uid String [ref: > "user:{uid}"]
ip String
}
Key "leaderboard:{day}" [type: zset] {
member String
score Int
}
Счётчик — GENERATED BY DEFAULT AS IDENTITY, внешний ключ отдельным ALTER TABLE.
CREATE TABLE authors (
id bigint GENERATED BY DEFAULT AS IDENTITY NOT NULL PRIMARY KEY,
full_name varchar(200) NOT NULL
);
CREATE TABLE books (
id bigint GENERATED BY DEFAULT AS IDENTITY NOT NULL PRIMARY KEY,
title varchar(500) NOT NULL,
author_id bigint,
price numeric(10,2) DEFAULT 0
);
ALTER TABLE books ADD CONSTRAINT fk_books_author_id FOREIGN KEY (author_id) REFERENCES authors (id);
Имена в обратных кавычках, AUTO_INCREMENT, numeric становится decimal, движок InnoDB.
CREATE TABLE `authors` (
`id` bigint NOT NULL AUTO_INCREMENT PRIMARY KEY,
`full_name` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `books` (
`id` bigint NOT NULL AUTO_INCREMENT PRIMARY KEY,
`title` varchar(500) NOT NULL,
`author_id` bigint,
`price` decimal(10,2) DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `books` ADD CONSTRAINT `fk_books_author_id` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`);
Имена в квадратных скобках, IDENTITY(1,1), varchar становится nvarchar.
CREATE TABLE [authors] (
[id] bigint IDENTITY(1,1) NOT NULL PRIMARY KEY,
[full_name] nvarchar(200) NOT NULL
);
CREATE TABLE [books] (
[id] bigint IDENTITY(1,1) NOT NULL PRIMARY KEY,
[title] nvarchar(500) NOT NULL,
[author_id] bigint,
[price] decimal(10,2) DEFAULT 0
);
ALTER TABLE [books] ADD CONSTRAINT [fk_books_author_id] FOREIGN KEY ([author_id]) REFERENCES [authors] ([id]);
Типы по сродству: TEXT, INTEGER, NUMERIC; внешний ключ внутри таблицы.
PRAGMA foreign_keys = ON;
CREATE TABLE authors (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
full_name TEXT NOT NULL
);
CREATE TABLE books (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
author_id INTEGER,
price NUMERIC DEFAULT 0,
FOREIGN KEY (author_id) REFERENCES authors (id)
);
Картинки и документы: SVG, PNG, PDF — эти форматы редактор только отдаёт.
Без входа схема лежит в вашем браузере и никуда не отправляется. После входа — в личном хранилище: только вы видите свои схемы, доступ по паролю, история версий.
Collection, Object и
Key, в PlantUML — коллекции и вложенные объекты. Это расширение DBSchema, поэтому другие
редакторы DBML такой файл не откроют; редактор предупреждает об этом и умеет выгрузить схему обычным
плоским DBML.
Ничего устанавливать не нужно. Регистрация — только если хотите хранить схемы на сервере.