Files
fastapi_best_architecture/backend/sql/create_tables.sql
2024-12-24 17:29:17 +08:00

439 lines
20 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for sys_api
-- ----------------------------
DROP TABLE IF EXISTS `sys_api`;
CREATE TABLE `sys_api`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`name` varchar(50) NOT NULL COMMENT 'api名称',
`method` varchar(16) NOT NULL COMMENT '请求方法',
`path` varchar(500) NOT NULL COMMENT 'api路径',
`remark` longtext COMMENT '备注',
`created_time` datetime NOT NULL COMMENT '创建时间',
`updated_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `ix_sys_api_id` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_casbin_rule
-- ----------------------------
DROP TABLE IF EXISTS `sys_casbin_rule`;
CREATE TABLE `sys_casbin_rule`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`ptype` varchar(255) NOT NULL COMMENT '策略类型: p / g',
`v0` varchar(255) NOT NULL COMMENT '角色ID / 用户uuid',
`v1` longtext NOT NULL COMMENT 'api路径 / 角色名称',
`v2` varchar(255) DEFAULT NULL COMMENT '请求方法',
`v3` varchar(255) DEFAULT NULL,
`v4` varchar(255) DEFAULT NULL,
`v5` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ix_sys_casbin_rule_id` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_config
-- ----------------------------
DROP TABLE IF EXISTS `sys_config`;
CREATE TABLE `sys_config`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`name` varchar(20) NOT NULL COMMENT '名称',
`type` varchar(20) DEFAULT NULL COMMENT '类型',
`key` varchar(50) NOT NULL COMMENT '键名',
`value` longtext NOT NULL COMMENT '键值',
`is_frontend` tinyint(1) NOT NULL COMMENT '是否前端',
`remark` longtext COMMENT '备注',
`created_time` datetime NOT NULL COMMENT '创建时间',
`updated_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `key` (`key`),
KEY `ix_sys_config_id` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_data_rule
-- ----------------------------
DROP TABLE IF EXISTS `sys_data_rule`;
CREATE TABLE `sys_data_rule`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`name` varchar(255) NOT NULL COMMENT '规则名称',
`model` varchar(50) NOT NULL COMMENT 'SQLA 模型类',
`column` varchar(20) NOT NULL COMMENT '数据库字段',
`operator` int NOT NULL COMMENT '运算符0and、1or',
`expression` int NOT NULL COMMENT '表达式0>、1>=、2<、3<=、4==、5!=、6in、7not_in',
`value` varchar(255) NOT NULL COMMENT '规则值',
`created_time` datetime NOT NULL COMMENT '创建时间',
`updated_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `ix_sys_data_rule_id` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_dept
-- ----------------------------
DROP TABLE IF EXISTS `sys_dept`;
CREATE TABLE `sys_dept`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`name` varchar(50) NOT NULL COMMENT '部门名称',
`level` int NOT NULL COMMENT '部门层级',
`sort` int NOT NULL COMMENT '排序',
`leader` varchar(20) DEFAULT NULL COMMENT '负责人',
`phone` varchar(11) DEFAULT NULL COMMENT '手机',
`email` varchar(50) DEFAULT NULL COMMENT '邮箱',
`status` int NOT NULL COMMENT '部门状态(0停用 1正常)',
`del_flag` tinyint(1) NOT NULL COMMENT '删除标志0删除 1存在',
`parent_id` int DEFAULT NULL COMMENT '父部门ID',
`created_time` datetime NOT NULL COMMENT '创建时间',
`updated_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `ix_sys_dept_parent_id` (`parent_id`),
KEY `ix_sys_dept_id` (`id`),
CONSTRAINT `sys_dept_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `sys_dept` (`id`) ON DELETE SET NULL
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_dict_data
-- ----------------------------
DROP TABLE IF EXISTS `sys_dict_data`;
CREATE TABLE `sys_dict_data`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`label` varchar(32) NOT NULL COMMENT '字典标签',
`value` varchar(32) NOT NULL COMMENT '字典值',
`sort` int NOT NULL COMMENT '排序',
`status` int NOT NULL COMMENT '状态0停用 1正常',
`remark` longtext COMMENT '备注',
`type_id` int NOT NULL COMMENT '字典类型关联ID',
`created_time` datetime NOT NULL COMMENT '创建时间',
`updated_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `label` (`label`),
UNIQUE KEY `value` (`value`),
KEY `type_id` (`type_id`),
KEY `ix_sys_dict_data_id` (`id`),
CONSTRAINT `sys_dict_data_ibfk_1` FOREIGN KEY (`type_id`) REFERENCES `sys_dict_type` (`id`) ON DELETE CASCADE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_dict_type
-- ----------------------------
DROP TABLE IF EXISTS `sys_dict_type`;
CREATE TABLE `sys_dict_type`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`name` varchar(32) NOT NULL COMMENT '字典类型名称',
`code` varchar(32) NOT NULL COMMENT '字典类型编码',
`status` int NOT NULL COMMENT '状态0停用 1正常',
`remark` longtext COMMENT '备注',
`created_time` datetime NOT NULL COMMENT '创建时间',
`updated_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
UNIQUE KEY `code` (`code`),
KEY `ix_sys_dict_type_id` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_gen_business
-- ----------------------------
DROP TABLE IF EXISTS `sys_gen_business`;
CREATE TABLE `sys_gen_business`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`app_name` varchar(50) NOT NULL COMMENT '应用名称(英文)',
`table_name_en` varchar(255) NOT NULL COMMENT '表名称(英文)',
`table_name_zh` varchar(255) NOT NULL COMMENT '表名称(中文)',
`table_simple_name_zh` varchar(255) NOT NULL COMMENT '表名称(中文简称)',
`table_comment` varchar(255) DEFAULT NULL COMMENT '表描述',
`schema_name` varchar(255) DEFAULT NULL COMMENT 'Schema 名称 (默认为英文表名称)',
`default_datetime_column` tinyint(1) NOT NULL COMMENT '是否存在默认时间列',
`api_version` varchar(20) NOT NULL COMMENT '代码生成 api 版本,默认为 v1',
`gen_path` varchar(255) DEFAULT NULL COMMENT '代码生成路径(默认为 app 根路径)',
`remark` longtext COMMENT '备注',
`created_time` datetime NOT NULL COMMENT '创建时间',
`updated_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `table_name_en` (`table_name_en`),
KEY `ix_sys_gen_business_id` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_gen_model
-- ----------------------------
DROP TABLE IF EXISTS `sys_gen_model`;
CREATE TABLE `sys_gen_model`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`name` varchar(50) NOT NULL COMMENT '列名称',
`comment` varchar(255) DEFAULT NULL COMMENT '列描述',
`type` varchar(20) NOT NULL COMMENT 'SQLA 模型列类型',
`pd_type` varchar(20) NOT NULL COMMENT '列类型对应的 pydantic 类型',
`default` longtext COMMENT '列默认值',
`sort` int DEFAULT NULL COMMENT '列排序',
`length` int NOT NULL COMMENT '列长度',
`is_pk` tinyint(1) NOT NULL COMMENT '是否主键',
`is_nullable` tinyint(1) NOT NULL COMMENT '是否可为空',
`gen_business_id` int NOT NULL COMMENT '代码生成业务ID',
PRIMARY KEY (`id`),
KEY `gen_business_id` (`gen_business_id`),
KEY `ix_sys_gen_model_id` (`id`),
CONSTRAINT `sys_gen_model_ibfk_1` FOREIGN KEY (`gen_business_id`) REFERENCES `sys_gen_business` (`id`) ON DELETE CASCADE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_login_log
-- ----------------------------
DROP TABLE IF EXISTS `sys_login_log`;
CREATE TABLE `sys_login_log`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`user_uuid` varchar(50) NOT NULL COMMENT '用户UUID',
`username` varchar(20) NOT NULL COMMENT '用户名',
`status` int NOT NULL COMMENT '登录状态(0失败 1成功)',
`ip` varchar(50) NOT NULL COMMENT '登录IP地址',
`country` varchar(50) DEFAULT NULL COMMENT '国家',
`region` varchar(50) DEFAULT NULL COMMENT '地区',
`city` varchar(50) DEFAULT NULL COMMENT '城市',
`user_agent` varchar(255) NOT NULL COMMENT '请求头',
`os` varchar(50) DEFAULT NULL COMMENT '操作系统',
`browser` varchar(50) DEFAULT NULL COMMENT '浏览器',
`device` varchar(50) DEFAULT NULL COMMENT '设备',
`msg` longtext NOT NULL COMMENT '提示消息',
`login_time` datetime NOT NULL COMMENT '登录时间',
`created_time` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `ix_sys_login_log_id` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_menu
-- ----------------------------
DROP TABLE IF EXISTS `sys_menu`;
CREATE TABLE `sys_menu`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`title` varchar(50) NOT NULL COMMENT '菜单标题',
`name` varchar(50) NOT NULL COMMENT '菜单名称',
`level` int NOT NULL COMMENT '菜单层级',
`sort` int NOT NULL COMMENT '排序',
`icon` varchar(100) DEFAULT NULL COMMENT '菜单图标',
`path` varchar(200) DEFAULT NULL COMMENT '路由地址',
`menu_type` int NOT NULL COMMENT '菜单类型0目录 1菜单 2按钮',
`component` varchar(255) DEFAULT NULL COMMENT '组件路径',
`perms` varchar(100) DEFAULT NULL COMMENT '权限标识',
`status` int NOT NULL COMMENT '菜单状态0停用 1正常',
`show` int NOT NULL COMMENT '是否显示0否 1是',
`cache` int NOT NULL COMMENT '是否缓存0否 1是',
`remark` longtext COMMENT '备注',
`parent_id` int DEFAULT NULL COMMENT '父菜单ID',
`created_time` datetime NOT NULL COMMENT '创建时间',
`updated_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `ix_sys_menu_id` (`id`),
KEY `ix_sys_menu_parent_id` (`parent_id`),
CONSTRAINT `sys_menu_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `sys_menu` (`id`) ON DELETE SET NULL
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_opera_log
-- ----------------------------
DROP TABLE IF EXISTS `sys_opera_log`;
CREATE TABLE `sys_opera_log`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`trace_id` varchar(32) NOT NULL COMMENT '请求跟踪 ID',
`username` varchar(20) DEFAULT NULL COMMENT '用户名',
`method` varchar(20) NOT NULL COMMENT '请求类型',
`title` varchar(255) NOT NULL COMMENT '操作模块',
`path` varchar(500) NOT NULL COMMENT '请求路径',
`ip` varchar(50) NOT NULL COMMENT 'IP地址',
`country` varchar(50) DEFAULT NULL COMMENT '国家',
`region` varchar(50) DEFAULT NULL COMMENT '地区',
`city` varchar(50) DEFAULT NULL COMMENT '城市',
`user_agent` varchar(255) NOT NULL COMMENT '请求头',
`os` varchar(50) DEFAULT NULL COMMENT '操作系统',
`browser` varchar(50) DEFAULT NULL COMMENT '浏览器',
`device` varchar(50) DEFAULT NULL COMMENT '设备',
`args` json DEFAULT NULL COMMENT '请求参数',
`status` int NOT NULL COMMENT '操作状态0异常 1正常',
`code` varchar(20) NOT NULL COMMENT '操作状态码',
`msg` longtext COMMENT '提示消息',
`cost_time` float NOT NULL COMMENT '请求耗时ms',
`opera_time` datetime NOT NULL COMMENT '操作时间',
`created_time` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `ix_sys_opera_log_id` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_role
-- ----------------------------
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`name` varchar(20) NOT NULL COMMENT '角色名称',
`status` int NOT NULL COMMENT '角色状态0停用 1正常',
`remark` longtext COMMENT '备注',
`created_time` datetime NOT NULL COMMENT '创建时间',
`updated_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `ix_sys_role_id` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_role_data_rule
-- ----------------------------
DROP TABLE IF EXISTS `sys_role_data_rule`;
CREATE TABLE `sys_role_data_rule`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`role_id` int NOT NULL COMMENT '角色ID',
`data_rule_id` int NOT NULL COMMENT '数据权限规则ID',
PRIMARY KEY (`id`, `role_id`, `data_rule_id`),
UNIQUE KEY `ix_sys_role_data_rule_id` (`id`),
KEY `role_id` (`role_id`),
KEY `data_rule_id` (`data_rule_id`),
CONSTRAINT `sys_role_data_rule_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (`id`) ON DELETE CASCADE,
CONSTRAINT `sys_role_data_rule_ibfk_2` FOREIGN KEY (`data_rule_id`) REFERENCES `sys_data_rule` (`id`) ON DELETE CASCADE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_role_menu
-- ----------------------------
DROP TABLE IF EXISTS `sys_role_menu`;
CREATE TABLE `sys_role_menu`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`role_id` int NOT NULL COMMENT '角色ID',
`menu_id` int NOT NULL COMMENT '菜单ID',
PRIMARY KEY (`id`, `role_id`, `menu_id`),
UNIQUE KEY `ix_sys_role_menu_id` (`id`),
KEY `role_id` (`role_id`),
KEY `menu_id` (`menu_id`),
CONSTRAINT `sys_role_menu_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (`id`) ON DELETE CASCADE,
CONSTRAINT `sys_role_menu_ibfk_2` FOREIGN KEY (`menu_id`) REFERENCES `sys_menu` (`id`) ON DELETE CASCADE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`uuid` varchar(50) NOT NULL,
`username` varchar(20) NOT NULL COMMENT '用户名',
`nickname` varchar(20) NOT NULL COMMENT '昵称',
`password` varchar(255) DEFAULT NULL COMMENT '密码',
`salt` varbinary(255) DEFAULT NULL COMMENT '加密盐',
`email` varchar(50) NOT NULL COMMENT '邮箱',
`is_superuser` tinyint(1) NOT NULL COMMENT '超级权限(0否 1是)',
`is_staff` tinyint(1) NOT NULL COMMENT '后台管理登陆(0否 1是)',
`status` int NOT NULL COMMENT '用户账号状态(0停用 1正常)',
`is_multi_login` tinyint(1) NOT NULL COMMENT '是否重复登陆(0否 1是)',
`avatar` varchar(255) DEFAULT NULL COMMENT '头像',
`phone` varchar(11) DEFAULT NULL COMMENT '手机号',
`join_time` datetime NOT NULL COMMENT '注册时间',
`last_login_time` datetime DEFAULT NULL COMMENT '上次登录',
`dept_id` int DEFAULT NULL COMMENT '部门关联ID',
`created_time` datetime NOT NULL COMMENT '创建时间',
`updated_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uuid` (`uuid`),
UNIQUE KEY `nickname` (`nickname`),
UNIQUE KEY `ix_sys_user_username` (`username`),
UNIQUE KEY `ix_sys_user_email` (`email`),
KEY `dept_id` (`dept_id`),
KEY `ix_sys_user_id` (`id`),
CONSTRAINT `sys_user_ibfk_1` FOREIGN KEY (`dept_id`) REFERENCES `sys_dept` (`id`) ON DELETE SET NULL
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_user_role
-- ----------------------------
DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` int NOT NULL COMMENT '用户ID',
`role_id` int NOT NULL COMMENT '角色ID',
PRIMARY KEY (`id`, `user_id`, `role_id`),
UNIQUE KEY `ix_sys_user_role_id` (`id`),
KEY `user_id` (`user_id`),
KEY `role_id` (`role_id`),
CONSTRAINT `sys_user_role_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`id`) ON DELETE CASCADE,
CONSTRAINT `sys_user_role_ibfk_2` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (`id`) ON DELETE CASCADE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Table structure for sys_user_social
-- ----------------------------
DROP TABLE IF EXISTS `sys_user_social`;
CREATE TABLE `sys_user_social`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`source` varchar(20) NOT NULL COMMENT '第三方用户来源',
`open_id` varchar(20) DEFAULT NULL COMMENT '第三方用户的 open id',
`uid` varchar(20) DEFAULT NULL COMMENT '第三方用户的 ID',
`union_id` varchar(20) DEFAULT NULL COMMENT '第三方用户的 union id',
`scope` varchar(120) DEFAULT NULL COMMENT '第三方用户授予的权限',
`code` varchar(50) DEFAULT NULL COMMENT '用户的授权 code',
`user_id` int DEFAULT NULL COMMENT '用户关联ID',
`created_time` datetime NOT NULL COMMENT '创建时间',
`updated_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `ix_sys_user_social_id` (`id`),
CONSTRAINT `sys_user_social_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`id`) ON DELETE SET NULL
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
SET FOREIGN_KEY_CHECKS = 1;