平时做数据库设计时大多基于 UI 操作,需要在各种输入框中频繁的来回切换,操作麻烦且效率低。也找到一些基于DSL方言的建表工具:
dbdiagram.io - Database Relationship Diagrams Design Tool
QuickDBD (quickdatabasediagrams.com)
Free ER Diagram Tool - ERD Lab
体验下来感觉有些语法还是很别扭, 本着重复发明轮子的精神, 闲来无事就自己做一个
工具特点:
- 使用 DSL 方言,语法简洁,易于上手;
- 自动提示,减少语法关键字输入;
- 无需鼠标操作,专注于表结构设计;
- 支持生成Mysql/Sqlite3/Postgres/Mssql SQL建表语句;
- 浏览器本地localStorage缓存;
- 实时生成 ER 关系图,方便直观地查看表关系(开发中);
技术实现:
- Vue3 + Codemirror
- DSL 方言解析:Lezer
- knex 建表sql语句生成
DSL示例:
// 代码注释
/*
块注释
*/
Table table_name {
@表注释
id bigint not null pk auto #字段注释
name varchar(255) # 姓名
is_deleted tinyint(1) not null default 0
...
Index{
(name asc) unique hash
...
}
}
乍一看和sql建表的语句好像区别不大, 省略了一些sql的关键字,再加上自动提示,没有了输入框的频繁切换, 可以比较专注的在设计表结构这件事情上.
运行效果:
目前功能还非常简陋. 喜欢的可以简单体验一下: https://litgh.github.io/