From a0d6a545c1e212779fa14665bd8061067de5f877 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sat, 13 Jan 2024 11:23:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=9E=B6=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/OrganizeInternalOA-ConfigTableConfig.md | 83 ++++++ doc/OrganizeInternalOA-SQL.md | 24 ++ mysql/organize_oa.sql | 270 +++++++++++++------- 3 files changed, 289 insertions(+), 88 deletions(-) create mode 100644 doc/OrganizeInternalOA-ConfigTableConfig.md diff --git a/doc/OrganizeInternalOA-ConfigTableConfig.md b/doc/OrganizeInternalOA-ConfigTableConfig.md new file mode 100644 index 0000000..779c61b --- /dev/null +++ b/doc/OrganizeInternalOA-ConfigTableConfig.md @@ -0,0 +1,83 @@ +# OrganizeInternalOA Config表详细内容设计 + +
Author: 筱锋xiao_lfeng | Version: 1.1.0
+ +## 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为主键(不管),团队成员信息定义value:organize_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`: 填写作者 diff --git a/doc/OrganizeInternalOA-SQL.md b/doc/OrganizeInternalOA-SQL.md index e9ea7ba..4e80fcc 100644 --- a/doc/OrganizeInternalOA-SQL.md +++ b/doc/OrganizeInternalOA-SQL.md @@ -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)** + #### 数据表字段属性 | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | diff --git a/mysql/organize_oa.sql b/mysql/organize_oa.sql index e433274..ae6fe50 100644 --- a/mysql/organize_oa.sql +++ b/mysql/organize_oa.sql @@ -3,9 +3,9 @@ START TRANSACTION; SET time_zone = "+00:00"; -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET @OLD_CHARACTER_SET_CLIENT = @@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS = @@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION = @@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- @@ -18,13 +18,16 @@ SET time_zone = "+00:00"; -- 表的结构 `oa_config` -- -CREATE TABLE `oa_config` ( - `id` bigint UNSIGNED NOT NULL COMMENT '主键', - `value` varchar(50) NOT NULL COMMENT '调用关键字', - `data` json DEFAULT NULL COMMENT 'json数据', - `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='配置数据表'; +CREATE TABLE `oa_config` +( + `id` bigint UNSIGNED NOT NULL COMMENT '主键', + `value` varchar(50) NOT NULL COMMENT '调用关键字', + `data` json DEFAULT NULL COMMENT 'json数据', + `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 ='配置数据表'; -- -------------------------------------------------------- @@ -32,14 +35,17 @@ CREATE TABLE `oa_config` ( -- 表的结构 `oa_permissions` -- -CREATE TABLE `oa_permissions` ( - `id` bigint UNSIGNED NOT NULL COMMENT '主键', - `pid` bigint UNSIGNED DEFAULT NULL COMMENT '权限父id', - `name` varchar(100) NOT NULL COMMENT '权限名称', - `code` varchar(50) NOT NULL COMMENT '权限编码', - `type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '0为菜单,1为权限', - `deleted_at` timestamp NULL DEFAULT NULL COMMENT '删除时间(没有删除应当为空)' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='权限表'; +CREATE TABLE `oa_permissions` +( + `id` bigint UNSIGNED NOT NULL COMMENT '主键', + `pid` bigint UNSIGNED DEFAULT NULL COMMENT '权限父id', + `name` varchar(100) NOT NULL COMMENT '权限名称', + `code` varchar(50) NOT NULL COMMENT '权限编码', + `type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '0为菜单,1为权限', + `deleted_at` timestamp NULL DEFAULT NULL COMMENT '删除时间(没有删除应当为空)' +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci COMMENT ='权限表'; -- -------------------------------------------------------- @@ -47,19 +53,43 @@ CREATE TABLE `oa_permissions` ( -- 表的结构 `oa_project` -- -CREATE TABLE `oa_project` ( - `id` bigint UNSIGNED NOT NULL COMMENT '项目id', - `name` varchar(255) NOT NULL COMMENT '项目名称', - `description` varchar(255) NOT NULL COMMENT '一句话描述', - `introduction` text NOT NULL COMMENT '项目详细介绍', - `code_open` tinyint(1) NOT NULL DEFAULT '0' COMMENT '代码是否开放', - `core_code` text COMMENT '核心代码内容(Markdown)', - `git` json DEFAULT NULL COMMENT 'git代码仓库内容', - `difficulty_level` tinyint UNSIGNED NOT NULL DEFAULT '1' COMMENT '难度等级', - `type` int UNSIGNED NOT NULL COMMENT '类型', - `reward` double DEFAULT NULL COMMENT '报酬', - `status` tinyint UNSIGNED NOT NULL DEFAULT '0' COMMENT '状态' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='项目内容表'; +CREATE TABLE `oa_project` +( + `id` bigint UNSIGNED NOT NULL COMMENT '项目id', + `name` varchar(255) NOT NULL COMMENT '项目名称', + `description` varchar(255) NOT NULL COMMENT '一句话描述', + `introduction` text NOT NULL COMMENT '项目详细介绍', + `code_open` tinyint(1) NOT NULL DEFAULT '0' COMMENT '代码是否开放', + `core_code` text COMMENT '核心代码内容(Markdown)', + `git` json DEFAULT NULL COMMENT 'git代码仓库内容', + `difficulty_level` tinyint UNSIGNED NOT NULL DEFAULT '1' COMMENT '难度等级', + `type` int UNSIGNED NOT NULL COMMENT '类型', + `reward` double DEFAULT NULL COMMENT '报酬', + `status` tinyint UNSIGNED NOT NULL DEFAULT '0' 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` -- -CREATE TABLE `oa_project_type` ( - `id` int UNSIGNED NOT NULL COMMENT '项目类型id', - `name` varchar(50) 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='项目类型'; +CREATE TABLE `oa_project_type` +( + `id` int UNSIGNED NOT NULL COMMENT '项目类型id', + `name` varchar(50) 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 ='项目类型'; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `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` -- -CREATE TABLE `oa_role` ( - `id` int UNSIGNED NOT NULL COMMENT '角色id', - `role_name` varchar(20) 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='角色表'; +CREATE TABLE `oa_role` +( + `id` int UNSIGNED NOT NULL COMMENT '角色id', + `role_name` varchar(20) 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 ='角色表'; -- -------------------------------------------------------- @@ -93,11 +146,14 @@ CREATE TABLE `oa_role` ( -- 表的结构 `oa_role_permissions` -- -CREATE TABLE `oa_role_permissions` ( - `rid` int UNSIGNED NOT NULL COMMENT '角色id', - `pid` bigint UNSIGNED NOT NULL COMMENT '权限id', - `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='角色权限表'; +CREATE TABLE `oa_role_permissions` +( + `rid` int UNSIGNED NOT NULL COMMENT '角色id', + `pid` bigint UNSIGNED NOT NULL COMMENT '权限id', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci COMMENT ='角色权限表'; -- -------------------------------------------------------- @@ -105,12 +161,15 @@ CREATE TABLE `oa_role_permissions` ( -- 表的结构 `oa_role_user` -- -CREATE TABLE `oa_role_user` ( - `uid` bigint UNSIGNED NOT NULL COMMENT '用户id', - `rid` int UNSIGNED NOT NULL COMMENT '角色id', - `createdt_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='角色用户表'; +CREATE TABLE `oa_role_user` +( + `uid` bigint UNSIGNED NOT NULL COMMENT '用户id', + `rid` int UNSIGNED NOT NULL COMMENT '角色id', + `createdt_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 ='角色用户表'; -- -------------------------------------------------------- @@ -118,36 +177,31 @@ CREATE TABLE `oa_role_user` ( -- 表的结构 `oa_user` -- -CREATE TABLE `oa_user` ( - `id` bigint UNSIGNED NOT NULL COMMENT '主键', - `job_id` char(10) NOT NULL COMMENT '工作ID:正则表达 "^[STU|TEA|OTH][0-9]{7}"', - `username` varchar(40) NOT NULL COMMENT '用户名', - `password` varchar(255) NOT NULL COMMENT '密码', - `address` varchar(255) NOT NULL COMMENT '用户家庭地址', - `phone` varchar(11) NOT NULL COMMENT '电话', - `email` varchar(100) NOT NULL COMMENT '邮箱', - `age` tinyint UNSIGNED NOT NULL COMMENT '年龄', - `signature` varchar(50) DEFAULT NULL COMMENT '一句话描述自己', - `sex` tinyint UNSIGNED NOT NULL DEFAULT '0' COMMENT '0/1/2:保密/男/女', - `avatar` text COMMENT '头像地址', - `nickname` varchar(20) DEFAULT NULL COMMENT '昵称', - `enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '账户是否可用', - `account_no_expired` tinyint(1) NOT NULL DEFAULT '1' COMMENT '账户是否过期', - `credentials_no_expired` tinyint(1) NOT NULL DEFAULT '0' COMMENT '密码是否过期', - `recommend` tinyint(1) NOT NULL DEFAULT '0' COMMENT '账户是否被推荐', - `account_no_locked` tinyint(1) NOT NULL COMMENT '账户是否被锁定', - `description` text 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='用户表'; - --- -------------------------------------------------------- - --- --- 表的结构 `oa_user_project` --- --- 读取表 organize_oa.oa_user_project 的结构时出错: #1146 - Table 'organize_oa.oa_user_project' doesn'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 'FROM `organize_oa`.`oa_user_project`' at line 1 +CREATE TABLE `oa_user` +( + `id` bigint UNSIGNED NOT NULL COMMENT '主键', + `job_id` char(10) NOT NULL COMMENT '工作ID:正则表达 "^[STU|TEA|OTH][0-9]{7}"', + `username` varchar(40) NOT NULL COMMENT '用户名', + `password` varchar(255) NOT NULL COMMENT '密码', + `address` varchar(255) NOT NULL COMMENT '用户家庭地址', + `phone` varchar(11) NOT NULL COMMENT '电话', + `email` varchar(100) NOT NULL COMMENT '邮箱', + `age` tinyint UNSIGNED NOT NULL COMMENT '年龄', + `signature` varchar(50) DEFAULT NULL COMMENT '一句话描述自己', + `sex` tinyint UNSIGNED NOT NULL DEFAULT '0' COMMENT '0/1/2:保密/男/女', + `avatar` text COMMENT '头像地址', + `nickname` varchar(20) DEFAULT NULL COMMENT '昵称', + `enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '账户是否可用', + `account_no_expired` tinyint(1) NOT NULL DEFAULT '1' COMMENT '账户是否过期', + `credentials_no_expired` tinyint(1) NOT NULL DEFAULT '0' COMMENT '密码是否过期', + `recommend` tinyint(1) NOT NULL DEFAULT '0' COMMENT '账户是否被推荐', + `account_no_locked` tinyint(1) NOT NULL COMMENT '账户是否被锁定', + `description` text 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 ='用户表'; -- -- 转储表的索引 @@ -174,12 +228,27 @@ ALTER TABLE `oa_project` ADD PRIMARY KEY (`id`), 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` -- ALTER TABLE `oa_project_type` 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` -- @@ -232,12 +301,24 @@ ALTER TABLE `oa_permissions` ALTER TABLE `oa_project` 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` -- ALTER TABLE `oa_project_type` 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` -- @@ -258,7 +339,7 @@ ALTER TABLE `oa_user` -- 限制表 `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` @@ -266,6 +347,19 @@ ALTER TABLE `oa_permissions` ALTER TABLE `oa_project` 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` -- @@ -281,6 +375,6 @@ ALTER TABLE `oa_role_user` ADD CONSTRAINT `oa_role_user_oa_user_id_fk` FOREIGN KEY (`uid`) REFERENCES `oa_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; COMMIT; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40101 SET CHARACTER_SET_CLIENT = @OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS = @OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION = @OLD_COLLATION_CONNECTION */;