peanut-database-designer
数据库设计助手。使用 markdown 设计数据库的表结构。
- 使用代码片段快速生成一段文档。
- 使用自动补全精准引用本表字段或他表字段。
设计文档示例
# `table_1` - 表注释
表说明。
## 字段
| 字段名 | 注释 | 类型 | 默认值 | 主键 | 可空 |
| ----------- | -------- | ----------- | ------ | ---- | ---- |
| dbid | 主键 | bigint | | 是 | 否 |
| name | 名称 | varchar(32) | | | 否 |
| master_id | 主表标识 | bigint | | | 否 |
| create_by | 创建人 | bigint | | | 否 |
| create_time | 创建时间 | datetime | | | 否 |
| update_by | 更新人 | bigint | | | 是 |
| update_time | 更新时间 | datetime | | | 是 |
## 约束
1. 主键: `pk_table_1`
2. 外键: `fk_table_1_master_id`, `master_id` 关联 `master_table.dbid`
3. 唯一: `uk_table_1_name`, 对应字段 `name`
## 索引
无
## 说明
1. 计量单位: 无
2. 数据字典: 无
代码片段
前缀 p 是 peanut [ˈpiːnʌt] 落花生 的首字母。
p-table - 设计一张数据库表结构
p-column - 新增一个空的字段行
p-column-seq - 新增一个序号字段行
p-column-parent - 新增一个父级字段行
p-fk - 新增一个外键约束
p-uk - 新增一个唯一约束
自动补全
- 按下
Alt + / 手动触发自动补全
- 外键约束,格式如下
`fk_table_name_field_1`, `field_1` 关联 `master_table.dbid`
^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^ ^^^^
外键名称 字段名 引用表名 .引用表字段
│ │ │ └── 输入.后提示引用表中的主键字段,通常是dbid
│ │ └── 自动补全表名
│ └── 提示本表中的字段列表,选择一个字段后生成外键名称
└── 不用填写,会自动生成,规则为 fk_{表名}_{字段名}
- 唯一约束,格式如下
一个字段:`uk_table_name_filed_1`, 字段为 `field_1`
两个字段:`uk_table_name_filed_1_field_2`, 字段为 `field_1` 和 `field_2`
三个字段:`uk_table_name_filed_1_field_2_field_3`, 字段为 `field_1`、`field_2` 和 `field_3`
以三个字段为例
`uk_table_name_filed_1_field_2_field_3`, 字段为 `field_1`、`field_2` 和 `field_3`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^ ^^^^^^^ ^ ^^^^^^^
│ │ │ │ │ └── Alt+/ 后提示字段列表,其中已排除 field_1 和 field_2
│ │ │ │ └── 输入“和”后自动输入 ``,并提示字段列表,其中已排除 field_1 和 field_2
│ │ │ └── Alt+/ 后提示字段列表,其中已排除 field_1
│ │ └── 输入“、”后自动输入 ``,并提示字段列表,其中已排除 field_1
│ └── Alt+/ 后提示字段列表
└── 不用填写,会自动生成,规则为 uk_{表名}_{字段1}_{字段2} 等,支持任意多个字段
- 说明中引用本表字段(避免输入 ``,因为需要中英文切换)
1. `field_1(字段一)`
^
在此处按下 Alt+/ 提示本表中的字段列表和其他表名
选中之后,以 \`字段名(字段注释)\` 的方式展示
- 说明中引用其他表字段(避免输入 ``,因为需要中英文切换)
1. `table1(表一).field_1(字段一)`
^ ^
│ 输入 . 后,提示选中表中的字段,
| 选中字段后,以 \`字段名(字段注释)\` 的方式展示
│
在此处按下 Alt+/ 提示本表中的字段列表和其他表名
选中其他表之后,以 \`表名(表注释)\` 的方式展示
语法校验
语法校验,有四种级别
- 警告 warning
- 错误 error
支持以下校验
- 表名
- 必须与文件名相同,不包含扩展名 error
- 必须采用 snake_case 命名法 error
- 全局不能重复 error
- 表注释
- 中间不能包含空白字符 warning
- 字段
- 字段名
- 必须采用 snake_case 命名法 error
- 不能重复 error
- 注释
- 中间不能包含空白字符 warning
- 类型
- 有效类型名:boolean、char、varchar、int、bigint、float、double、decimal、date、datetime、time
- char、varchar 明确指定长度,长度必须大于1
- float、double、decimal 明确指定精度和标度,
- 精度的取值范围为1到65
- 标度的取值范围为0到30
- 标度必须小于或等于精度
- 默认值
- 如果是 boolean 类型,则值为 true 或 false
- 如果是 char 类型,则默认值的长度跟char中指定的长度要一致
- 如果是 int、bigint,则必须是整数
- 如果是 float、double、decimal,则必须是有效数字
- 可空
- 值必须为是或否
- 不能为空
- 主键约束
2. 约束名必须是 pk_{表名}
- 外键约束
- 格式必须为:
fk_table_1_master_id , master_id 关联 master_table.dbid
- 约束名必须是 fk_{表名}_{字段名}
- 本表中的字段名必须存在
- 引用表的表名必须存在
- 引用字段必须存在
- 引用表与引用字段必须用.隔开
- 唯一约束
- 格式必须为
uk_table_name_filed_1_field_2_field_3 , 字段为 field_1 、field_2 和 field_3
- 约束名必须是 uk_{表名}_{字段名}
- 字段名必须存在
跳转到定义
1. `fk_table_name_field_1`, `field_1` 关联 `master_table.dbid`
^^^^^^^^^^^^ ^^^
│ └── 跳转到引用字段的第一列
└── 跳转到引用表的第一行
2. ``
如何维护计量单位
- 在
/data/unit.md 文件中维护所有用到的计量单位
- 在每张表中引用这些单位,可在此处添加检查
部署
- 使用 pnpm 时报缺少依赖,改为 npm 之后正常
vsce package 打包
vsce publish 发布
| |