Appearance
数据库建表规范
- 在
codegen/tables/base/base.sql文件中, 用户表实例:base_usrbase_deptbase_usr_dept:
sql
------------------------------------------------------------------------ 用户
drop table if exists `base_usr`;
CREATE TABLE if not exists `base_usr` (
`id` varchar(22) NOT NULL COMMENT 'ID',
`img` varchar(22) NOT NULL DEFAULT '' COMMENT '头像',
`lbl` varchar(45) NOT NULL DEFAULT '' COMMENT '名称',
`username` varchar(45) NOT NULL DEFAULT '' COMMENT '用户名',
`password` varchar(43) NOT NULL DEFAULT '' COMMENT '密码',
`default_org_id` varchar(22) NOT NULL DEFAULT '' COMMENT '默认组织',
`is_locked` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '锁定,dict:is_locked',
`is_enabled` tinyint unsigned NOT NULL DEFAULT 1 COMMENT '启用,dict:is_enabled',
`order_by` int unsigned NOT NULL DEFAULT 1 COMMENT '排序',
`rem` varchar(100) NOT NULL DEFAULT '' COMMENT '备注',
`is_hidden` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '隐藏记录',
`tenant_id` varchar(22) NOT NULL DEFAULT '' COMMENT '租户',
`create_usr_id` varchar(22) NOT NULL DEFAULT '' COMMENT '创建人',
`create_usr_id_lbl` varchar(45) NOT NULL DEFAULT '' COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_usr_id` varchar(22) NOT NULL DEFAULT '' COMMENT '更新人',
`update_usr_id_lbl` varchar(45) NOT NULL DEFAULT '' COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`is_deleted` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '删除,dict:is_deleted',
`delete_usr_id` varchar(22) NOT NULL DEFAULT '' COMMENT '删除人',
`delete_usr_id_lbl` varchar(45) NOT NULL DEFAULT '' COMMENT '删除人',
`delete_time` datetime DEFAULT NULL COMMENT '删除时间',
INDEX (`lbl`, `tenant_id`, `is_deleted`),
INDEX (`username`, `tenant_id`, `is_deleted`),
INDEX (`username`, `password`, `tenant_id`, `is_deleted`),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='用户';
------------------------------------------------------------------------ 部门
drop table if exists `base_dept`;
CREATE TABLE if not exists `base_dept` (
`id` varchar(22) NOT NULL COMMENT 'ID',
`parent_id` varchar(22) NOT NULL DEFAULT '' COMMENT '父部门',
`lbl` varchar(22) NOT NULL DEFAULT '' COMMENT '名称',
`is_locked` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '锁定,dict:is_locked',
`is_enabled` tinyint unsigned NOT NULL DEFAULT 1 COMMENT '启用,dict:is_enabled',
`order_by` int unsigned NOT NULL DEFAULT 1 COMMENT '排序',
`rem` varchar(100) NOT NULL DEFAULT '' COMMENT '备注',
`org_id` varchar(22) NOT NULL DEFAULT '' COMMENT '组织',
`org_id_lbl` varchar(45) NOT NULL DEFAULT '' COMMENT '组织',
`tenant_id` varchar(22) NOT NULL DEFAULT '' COMMENT '租户',
`create_usr_id` varchar(22) NOT NULL DEFAULT '' COMMENT '创建人',
`create_usr_id_lbl` varchar(45) NOT NULL DEFAULT '' COMMENT '操作人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_usr_id` varchar(22) NOT NULL DEFAULT '' COMMENT '更新人',
`update_usr_id_lbl` varchar(45) NOT NULL DEFAULT '' COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`is_deleted` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '删除,dict:is_deleted',
`delete_usr_id` varchar(22) NOT NULL DEFAULT '' COMMENT '删除人',
`delete_usr_id_lbl` varchar(45) NOT NULL DEFAULT '' COMMENT '删除人',
`delete_time` datetime DEFAULT NULL COMMENT '删除时间',
INDEX (`parent_id`, `lbl`, `org_id`, `tenant_id`, `is_deleted`),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='部门';
------------------------------------------------------------------------ 用户部门
drop table if exists `base_usr_dept`;
CREATE TABLE if not exists `base_usr_dept` (
`id` varchar(22) NOT NULL COMMENT 'ID',
`usr_id` varchar(22) NOT NULL DEFAULT '' COMMENT '用户',
`dept_id` varchar(22) NOT NULL DEFAULT '' COMMENT '部门',
`order_by` int unsigned NOT NULL DEFAULT 1 COMMENT '排序',
`tenant_id` varchar(22) NOT NULL DEFAULT '' COMMENT '租户',
`create_usr_id` varchar(22) NOT NULL DEFAULT '' COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_usr_id` varchar(22) NOT NULL DEFAULT '' COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`is_deleted` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '删除,dict:is_deleted',
`delete_time` datetime DEFAULT NULL COMMENT '删除时间',
INDEX (`usr_id`, `dept_id`, `tenant_id`, `is_deleted`),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='用户部门';其中表名
base_usr规范为[模块名]_[表名],表名为小写, 用_分隔主键名称固定为
id, 类型为varchar(22), 且不为空, 里面存储经过base64编码的uuid, 例如:sql`id` varchar(22) NOT NULL COMMENT 'ID',外键名称固定为
[表名]_id, 类型为varchar(22), 且不为空, 例如:sql`usr_id` varchar(22) NOT NULL DEFAULT '' COMMENT '用户',如果外键命名方式不是
[表名]_id, 则需要在配置文件codegen/src/tables/[模块名]/[模块名].ts中对应的列配置外键相关的配置foreignKey字段名如果是
img或者_img结尾的字段, 则该字段会被认为是图片字段, 会被自动处理为图片上传字段, 里面存储的是逗号分隔的图片uuid, 这个uuid对应的附件存储在minio中的图片, 例如:sql`img` varchar(22) NOT NULL DEFAULT '' COMMENT '头像',如果字段名不是
img也不是_img结尾, 但是需要被处理为图片上传字段, 则需要在配置文件codegen/src/tables/[模块名]/[模块名].ts中对应的列配置图片上传相关的配置isImg如果字段的长度是
varchar(22), 则只能存储1张图片, 如果是varchar(46), 则可以存储2张图片, 以此类推, 存储图片的最大数量是varchar的长度是23的倍数
锁定功能的字段名固定为is_locked, 如果一张表需要锁定功能, 则需要在表中添加is_locked字段, 例如:sql`is_locked` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '锁定,dict:is_locked',同理, 这些字段名也是固定的:
sql`is_enabled` tinyint unsigned NOT NULL DEFAULT 1 COMMENT '启用,dict:is_enabled', `order_by` int unsigned NOT NULL DEFAULT 1 COMMENT '排序', `rem` varchar(100) NOT NULL DEFAULT '' COMMENT '备注', `is_hidden` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '隐藏记录', `tenant_id` varchar(22) NOT NULL DEFAULT '' COMMENT '租户', `create_usr_id` varchar(22) NOT NULL DEFAULT '' COMMENT '创建人', `create_usr_id_lbl` varchar(45) NOT NULL DEFAULT '' COMMENT '创建人', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_usr_id` varchar(22) NOT NULL DEFAULT '' COMMENT '更新人', `update_usr_id_lbl` varchar(45) NOT NULL DEFAULT '' COMMENT '更新人', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `is_deleted` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '删除,dict:is_deleted', `delete_usr_id` varchar(22) NOT NULL DEFAULT '' COMMENT '删除人', `delete_usr_id_lbl` varchar(45) NOT NULL DEFAULT '' COMMENT '删除人', `delete_time` datetime DEFAULT NULL COMMENT '删除时间',is_enabled字段用于标记记录是否启用, 0: 禁用, 1: 启用order_by字段用于排序rem字段用于备注is_hidden字段用于标记记录是否隐藏, 0: 显示, 1: 隐藏, 在前端列表中不显示的记录tenant_id字段用于标记这张表是否需要进行租户隔离org_id字段用于标记这张表是否需要进行组织隔离create_usr_id字段用于标记创建人create_usr_id_lbl字段用于标记创建人名称, 冗余字段create_time字段用于标记创建时间update_usr_id字段用于标记更新人update_usr_id_lbl字段用于标记更新人名称, 冗余字段update_time字段用于标记更新时间is_deleted字段用于标记记录是否删除, 0: 未删除, 1: 已删除delete_usr_id字段用于标记删除人delete_usr_id_lbl字段用于标记删除人名称, 冗余字段delete_time字段用于标记删除时间