数据库架构

This commit is contained in:
筱锋xiao_lfeng 2024-01-13 11:23:44 +08:00
parent 5a000412b7
commit a0d6a545c1
No known key found for this signature in database
GPG Key ID: F693AA12AABBFA87
3 changed files with 289 additions and 88 deletions

View File

@ -0,0 +1,83 @@
# OrganizeInternalOA Config表详细内容设计
<div align=right>Author: 筱锋xiao_lfeng | Version: 1.1.0</div>
## oa_config 数据表
### 数据表结构
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
| :--: | :----------: | :--------: | :-------------: | :--: | :--: | :---------------: | :---------------: |
| 1 | `id` | 主键 | bigint unsigned | PRI | NO | auto_increment | |
| 2 | `value` | 调用关键字 | varchar(50) | UNI | NO | | |
| 3 | `data` | json数据 | json | | YES | | |
| 4 | `created_at` | 创建时间 | timestamp | | NO | DEFAULT_GENERATED | CURRENT_TIMESTAMP |
| 5 | `updated_at` | 修改时间 | timestamp | | YES | | |
### 各功能内容解释
1. `id` : 主键,构建索引所用
2. `value` : 构建索引,用于索引字符串内容,方便对 `data` 的获取
3. `data` : 输出的 json 数据(重要)
4. `created_at` : 创建时间
5. `updated_at` : 修改时间
## 说明
> 在这张数据表中,为存储相关配置信息,例如前端需要展示的轮播图、展览业、合作厂商列表、优秀成员列表等等,为了方便开发以及后续维护不需要进行额外进行对表的设计(对于新的一个前端展示功能模块就要新建一张表,显得麻烦),故将所有的内容压缩到这张表,需要展示的内容已结构化 json 数据存储到 `data` 字段。下面是内容举例。
假设我现在有一个config表
id value data
然后我有两个前端模块要动态(可修改)展示,一个是团队信息展示,另外一个轮播图,那么我新增一行
id为主键不管团队成员信息定义valueorganize_user_info设计数据结构最终结构化为json存储到 data
轮播图一样定义value: image_index设计数据结构存储 data
一段时间后,有新的业务要展示,例如合作厂家展示
那就在这张表新建一行数据定义value:cooperate然后设计数据结构 存储data
以后有新的展示业务,以此类推。
这样取对应地方数据WHERE value后取出data直接发送前端或定时解析后给redis。也不用一个业务新建一张表也没那么多数据表查找循环。
对于数据体量非巨大的应该有一定可行性。
## 轮播图数据结构设计
```json
{
"order": string,
"data": [
{
"display_order": integer,
"image": string,
"title": string,
"description": string,
"is_active": boolean,
"created_at": timestamp,
"updated_at": timestamp,
"author": string
},
{
......
}
]
}
```
1. `order`: 展示顺序,可选值 [asc|desc]
2. `data`: 数据内容
1. `display_order`: 展示顺序输入integer自定义处理
2. `image`: 图片地址
3. `title`: 标题
4. `description`: 描述
5. `is_active`: 是否展示 [true|false]
6. `created_at`: 创建时间
7. `updated_at`: 修改时间
8. `autohr`: 填写作者

View File

@ -235,6 +235,8 @@ node6 --|> node4
> 【权限表】所有的权限,具体到每一个功能 > 【权限表】所有的权限,具体到每一个功能
字段 `pid` 外键约束 `id` 模式CASCADE更新与删除
#### 数据表字段属性 #### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
@ -254,6 +256,10 @@ node6 --|> node4
> 【用户角色分配表】为用户赋予默认权限属性的内容 > 【用户角色分配表】为用户赋予默认权限属性的内容
字段 `rid` 外键约束 `oa_role.id` 模式RESTRICT更新与删除
字段 `uid` 外键约束 `oa_user.id` 模式CASCADE更新与删除
#### 数据表字段属性 #### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
@ -271,6 +277,10 @@ node6 --|> node4
> 【角色权限表】为角色赋予指定权限操作 > 【角色权限表】为角色赋予指定权限操作
字段 `rid` 外键约束 `oa_role.id` 模式CASCADE更新与删除
字段 `pid` 外键约束 `oa_permissions.id` 模式CASCADE更新与删除
#### 数据表字段属性 #### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
@ -287,6 +297,8 @@ node6 --|> node4
> 【项目表】用于存放项目相关内容 > 【项目表】用于存放项目相关内容
字段 `type` 外键约束 `oa_project_type.id` 模式CASCADE更新模式RESTRICT删除
#### 数据表字段属性 #### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
@ -326,6 +338,10 @@ node6 --|> node4
#### 说明 #### 说明
> 【项目切割表】用于存放项目分割模块后的各模块内容
字段 `pid` 外键约束 `oa_project.id` 模式CASCADE更新与删除
#### 数据表字段属性 #### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
@ -348,6 +364,10 @@ node6 --|> node4
> 【用户项目分配表】用于存放用户所分配到的子项目内容 > 【用户项目分配表】用于存放用户所分配到的子项目内容
字段 `uid` 外键约束 `oa_user.id` 模式RESTRICT更新与删除
字段 `pid` 外键约束 `oa_project_cutting.id` 模式CASCADE更新与删除
#### 数据表字段属性 #### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
@ -364,6 +384,10 @@ node6 --|> node4
#### 说明 #### 说明
> 【配置表】用于相关内容的配置
**请注意,这部分内容需要有额外的定义,具体定义内容请参考 [《config数据配置》](./OrganizeInternalOA-ConfigTableConfig.md)**
#### 数据表字段属性 #### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |

View File

@ -18,13 +18,16 @@ SET time_zone = "+00:00";
-- 表的结构 `oa_config` -- 表的结构 `oa_config`
-- --
CREATE TABLE `oa_config` ( CREATE TABLE `oa_config`
(
`id` bigint UNSIGNED NOT NULL COMMENT '主键', `id` bigint UNSIGNED NOT NULL COMMENT '主键',
`value` varchar(50) NOT NULL COMMENT '调用关键字', `value` varchar(50) NOT NULL COMMENT '调用关键字',
`data` json DEFAULT NULL COMMENT 'json数据', `data` json DEFAULT NULL COMMENT 'json数据',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '修改时间' `updated_at` timestamp NULL DEFAULT NULL COMMENT '修改时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='配置数据表'; ) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT ='配置数据表';
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -32,14 +35,17 @@ CREATE TABLE `oa_config` (
-- 表的结构 `oa_permissions` -- 表的结构 `oa_permissions`
-- --
CREATE TABLE `oa_permissions` ( CREATE TABLE `oa_permissions`
(
`id` bigint UNSIGNED NOT NULL COMMENT '主键', `id` bigint UNSIGNED NOT NULL COMMENT '主键',
`pid` bigint UNSIGNED DEFAULT NULL COMMENT '权限父id', `pid` bigint UNSIGNED DEFAULT NULL COMMENT '权限父id',
`name` varchar(100) NOT NULL COMMENT '权限名称', `name` varchar(100) NOT NULL COMMENT '权限名称',
`code` varchar(50) NOT NULL COMMENT '权限编码', `code` varchar(50) NOT NULL COMMENT '权限编码',
`type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '0为菜单1为权限', `type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '0为菜单1为权限',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT '删除时间(没有删除应当为空)' `deleted_at` timestamp NULL DEFAULT NULL COMMENT '删除时间(没有删除应当为空)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='权限表'; ) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT ='权限表';
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -47,7 +53,8 @@ CREATE TABLE `oa_permissions` (
-- 表的结构 `oa_project` -- 表的结构 `oa_project`
-- --
CREATE TABLE `oa_project` ( CREATE TABLE `oa_project`
(
`id` bigint UNSIGNED NOT NULL COMMENT '项目id', `id` bigint UNSIGNED NOT NULL COMMENT '项目id',
`name` varchar(255) NOT NULL COMMENT '项目名称', `name` varchar(255) NOT NULL COMMENT '项目名称',
`description` varchar(255) NOT NULL COMMENT '一句话描述', `description` varchar(255) NOT NULL COMMENT '一句话描述',
@ -59,7 +66,30 @@ CREATE TABLE `oa_project` (
`type` int UNSIGNED NOT NULL COMMENT '类型', `type` int UNSIGNED NOT NULL COMMENT '类型',
`reward` double DEFAULT NULL COMMENT '报酬', `reward` double DEFAULT NULL COMMENT '报酬',
`status` tinyint UNSIGNED NOT NULL DEFAULT '0' COMMENT '状态' `status` tinyint UNSIGNED NOT NULL DEFAULT '0' COMMENT '状态'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='项目内容表'; ) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT ='项目内容表';
-- --------------------------------------------------------
--
-- 表的结构 `oa_project_cutting`
--
CREATE TABLE `oa_project_cutting`
(
`id` bigint UNSIGNED NOT NULL COMMENT '主键',
`pid` bigint UNSIGNED NOT NULL COMMENT '项目id',
`name` varchar(40) NOT NULL COMMENT '项目分割模块名字',
`tag` json DEFAULT NULL COMMENT '模块标签',
`engineering` tinyint UNSIGNED NOT NULL DEFAULT '1' COMMENT '工程量计算',
`estimated_time` int UNSIGNED NOT NULL DEFAULT '3' COMMENT '预估时间(小时)',
`real_time` timestamp NULL DEFAULT NULL COMMENT '实际时间',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '修改时间'
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT ='项目切割';
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -67,12 +97,32 @@ CREATE TABLE `oa_project` (
-- 表的结构 `oa_project_type` -- 表的结构 `oa_project_type`
-- --
CREATE TABLE `oa_project_type` ( CREATE TABLE `oa_project_type`
(
`id` int UNSIGNED NOT NULL COMMENT '项目类型id', `id` int UNSIGNED NOT NULL COMMENT '项目类型id',
`name` varchar(50) NOT NULL COMMENT '类型名字', `name` varchar(50) NOT NULL COMMENT '类型名字',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '修改时间' `updated_at` timestamp NULL DEFAULT NULL COMMENT '修改时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='项目类型'; ) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT ='项目类型';
-- --------------------------------------------------------
--
-- 表的结构 `oa_project_user`
--
CREATE TABLE `oa_project_user`
(
`id` bigint UNSIGNED NOT NULL COMMENT '主键id',
`uid` bigint UNSIGNED NOT NULL COMMENT '用户id',
`pid` bigint UNSIGNED NOT NULL COMMENT '接到分割项目内容',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '修改时间'
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT ='用户项目表';
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -80,12 +130,15 @@ CREATE TABLE `oa_project_type` (
-- 表的结构 `oa_role` -- 表的结构 `oa_role`
-- --
CREATE TABLE `oa_role` ( CREATE TABLE `oa_role`
(
`id` int UNSIGNED NOT NULL COMMENT '角色id', `id` int UNSIGNED NOT NULL COMMENT '角色id',
`role_name` varchar(20) NOT NULL COMMENT '角色名称', `role_name` varchar(20) NOT NULL COMMENT '角色名称',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '修改时间' `updated_at` timestamp NULL DEFAULT NULL COMMENT '修改时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='角色表'; ) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT ='角色表';
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -93,11 +146,14 @@ CREATE TABLE `oa_role` (
-- 表的结构 `oa_role_permissions` -- 表的结构 `oa_role_permissions`
-- --
CREATE TABLE `oa_role_permissions` ( CREATE TABLE `oa_role_permissions`
(
`rid` int UNSIGNED NOT NULL COMMENT '角色id', `rid` int UNSIGNED NOT NULL COMMENT '角色id',
`pid` bigint UNSIGNED NOT NULL COMMENT '权限id', `pid` bigint UNSIGNED NOT NULL COMMENT '权限id',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='角色权限表'; ) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT ='角色权限表';
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -105,12 +161,15 @@ CREATE TABLE `oa_role_permissions` (
-- 表的结构 `oa_role_user` -- 表的结构 `oa_role_user`
-- --
CREATE TABLE `oa_role_user` ( CREATE TABLE `oa_role_user`
(
`uid` bigint UNSIGNED NOT NULL COMMENT '用户id', `uid` bigint UNSIGNED NOT NULL COMMENT '用户id',
`rid` int UNSIGNED NOT NULL COMMENT '角色id', `rid` int UNSIGNED NOT NULL COMMENT '角色id',
`createdt_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `createdt_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '修改时间' `updated_at` timestamp NULL DEFAULT NULL COMMENT '修改时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='角色用户表'; ) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT ='角色用户表';
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -118,7 +177,8 @@ CREATE TABLE `oa_role_user` (
-- 表的结构 `oa_user` -- 表的结构 `oa_user`
-- --
CREATE TABLE `oa_user` ( CREATE TABLE `oa_user`
(
`id` bigint UNSIGNED NOT NULL COMMENT '主键', `id` bigint UNSIGNED NOT NULL COMMENT '主键',
`job_id` char(10) NOT NULL COMMENT '工作ID正则表达 "^[STU|TEA|OTH][0-9]{7}"', `job_id` char(10) NOT NULL COMMENT '工作ID正则表达 "^[STU|TEA|OTH][0-9]{7}"',
`username` varchar(40) NOT NULL COMMENT '用户名', `username` varchar(40) NOT NULL COMMENT '用户名',
@ -139,15 +199,9 @@ CREATE TABLE `oa_user` (
`description` text COMMENT '个人简介', `description` text COMMENT '个人简介',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间' `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表'; ) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
-- -------------------------------------------------------- COLLATE = utf8mb4_0900_ai_ci COMMENT ='用户表';
--
-- 表的结构 `oa_user_project`
--
-- 读取表 organize_oa.oa_user_project 的结构时出错: #1146 - Table &#039;organize_oa.oa_user_project&#039; doesn&#039;t exist
-- 读取表 organize_oa.oa_user_project 的数据时发生错误: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near &#039;FROM `organize_oa`.`oa_user_project`&#039; at line 1
-- --
-- 转储表的索引 -- 转储表的索引
@ -174,12 +228,27 @@ ALTER TABLE `oa_project`
ADD PRIMARY KEY (`id`), ADD PRIMARY KEY (`id`),
ADD KEY `oa_project_oa_project_type_id_fk` (`type`); ADD KEY `oa_project_oa_project_type_id_fk` (`type`);
--
-- 表的索引 `oa_project_cutting`
--
ALTER TABLE `oa_project_cutting`
ADD PRIMARY KEY (`id`),
ADD KEY `oa_project_cutting_oa_project_id_fk` (`pid`);
-- --
-- 表的索引 `oa_project_type` -- 表的索引 `oa_project_type`
-- --
ALTER TABLE `oa_project_type` ALTER TABLE `oa_project_type`
ADD PRIMARY KEY (`id`); ADD PRIMARY KEY (`id`);
--
-- 表的索引 `oa_project_user`
--
ALTER TABLE `oa_project_user`
ADD PRIMARY KEY (`id`),
ADD KEY `oa_project_user_oa_project_cutting_id_fk` (`pid`),
ADD KEY `oa_user_project_oa_user_id_fk` (`uid`);
-- --
-- 表的索引 `oa_role` -- 表的索引 `oa_role`
-- --
@ -232,12 +301,24 @@ ALTER TABLE `oa_permissions`
ALTER TABLE `oa_project` ALTER TABLE `oa_project`
MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '项目id'; MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '项目id';
--
-- 使用表AUTO_INCREMENT `oa_project_cutting`
--
ALTER TABLE `oa_project_cutting`
MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键';
-- --
-- 使用表AUTO_INCREMENT `oa_project_type` -- 使用表AUTO_INCREMENT `oa_project_type`
-- --
ALTER TABLE `oa_project_type` ALTER TABLE `oa_project_type`
MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '项目类型id'; MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '项目类型id';
--
-- 使用表AUTO_INCREMENT `oa_project_user`
--
ALTER TABLE `oa_project_user`
MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键id';
-- --
-- 使用表AUTO_INCREMENT `oa_role` -- 使用表AUTO_INCREMENT `oa_role`
-- --
@ -258,7 +339,7 @@ ALTER TABLE `oa_user`
-- 限制表 `oa_permissions` -- 限制表 `oa_permissions`
-- --
ALTER TABLE `oa_permissions` ALTER TABLE `oa_permissions`
ADD CONSTRAINT `oa_permissions_oa_permissions_id_fk` FOREIGN KEY (`pid`) REFERENCES `oa_permissions` (`id`); ADD CONSTRAINT `oa_permissions_oa_permissions_id_fk` FOREIGN KEY (`pid`) REFERENCES `oa_permissions` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- --
-- 限制表 `oa_project` -- 限制表 `oa_project`
@ -266,6 +347,19 @@ ALTER TABLE `oa_permissions`
ALTER TABLE `oa_project` ALTER TABLE `oa_project`
ADD CONSTRAINT `oa_project_oa_project_type_id_fk` FOREIGN KEY (`type`) REFERENCES `oa_project_type` (`id`) ON UPDATE CASCADE; ADD CONSTRAINT `oa_project_oa_project_type_id_fk` FOREIGN KEY (`type`) REFERENCES `oa_project_type` (`id`) ON UPDATE CASCADE;
--
-- 限制表 `oa_project_cutting`
--
ALTER TABLE `oa_project_cutting`
ADD CONSTRAINT `oa_project_cutting_oa_project_id_fk` FOREIGN KEY (`pid`) REFERENCES `oa_project` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- 限制表 `oa_project_user`
--
ALTER TABLE `oa_project_user`
ADD CONSTRAINT `oa_project_user_oa_project_cutting_id_fk` FOREIGN KEY (`pid`) REFERENCES `oa_project_cutting` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `oa_user_project_oa_user_id_fk` FOREIGN KEY (`uid`) REFERENCES `oa_user` (`id`);
-- --
-- 限制表 `oa_role_permissions` -- 限制表 `oa_role_permissions`
-- --