数据库架构

This commit is contained in:
筱锋xiao_lfeng 2024-01-13 10:41:18 +08:00
parent 99fa0edcbf
commit 5a000412b7
Signed by: XiaoLFeng
GPG Key ID: F693AA12AABBFA87
2 changed files with 206 additions and 83 deletions

View File

@ -92,7 +92,92 @@ public interface GeneralMapper {
## organize_oa 数据库设计 ## organize_oa 数据库设计
![image-20240113005049859](./assets/image-20240113005049859.png) > 以下是关于此数据库目前结构样式图,其中箭头为外键约束。对于外键约束内容详细会在下面进行详细叙述。
```mermaid
classDiagram
direction BT
class node7 {
varchar(50) value /* 调用关键字 */
json data /* json数据 */
timestamp created_at /* 创建时间 */
timestamp updated_at /* 修改时间 */
bigint unsigned id /* 主键 */
}
class node0 {
bigint unsigned pid /* 权限父id */
varchar(100) name /* 权限名称 */
varchar(50) code /* 权限编码 */
tinyint(1) type /* 0为菜单1为权限 */
deleted_at /* 删除时间(没有删除应当为空) */ timestamp
bigint unsigned id /* 主键 */
}
class node5 {
varchar(255) name /* 项目名称 */
varchar(255) description /* 一句话描述 */
text introduction /* 项目详细介绍 */
tinyint(1) code_open /* 代码是否开放 */
text core_code /* 核心代码内容Markdown */
json git /* git代码仓库内容 */
tinyint unsigned difficulty_level /* 难度等级 */
int unsigned type /* 类型 */
double reward /* 报酬 */
tinyint unsigned status /* 状态 */
bigint unsigned id /* 项目id */
}
class node2 {
varchar(50) name /* 类型名字 */
timestamp created_at /* 创建时间 */
timestamp updated_at /* 修改时间 */
int unsigned id /* 项目类型id */
}
class node3 {
varchar(20) role_name /* 角色名称 */
timestamp created_at /* 创建时间 */
timestamp updated_at /* 修改时间 */
int unsigned id /* 角色id */
}
class node1 {
bigint unsigned pid /* 权限id */
timestamp created_at /* 创建时间 */
int unsigned rid /* 角色id */
}
class node6 {
int unsigned rid /* 角色id */
timestamp createdt_at /* 创建时间 */
timestamp updated_at /* 修改时间 */
bigint unsigned uid /* 用户id */
}
class node4 {
char(10) job_id /* 工作ID */
varchar(40) username /* 用户名 */
varchar(255) password /* 密码 */
varchar(255) address /* 用户家庭地址 */
varchar(11) phone /* 电话 */
varchar(100) email /* 邮箱 */
tinyint unsigned age /* 年龄 */
varchar(50) signature /* 一句话描述自己 */
tinyint unsigned sex /* 0/1/2:保密/男/女 */
text avatar /* 头像地址 */
varchar(20) nickname /* 昵称 */
tinyint(1) enabled /* 账户是否可用 */
tinyint(1) account_no_expired /* 账户是否过期 */
tinyint(1) credentials_no_expired /* 密码是否过期 */
tinyint(1) recommend /* 账户是否被推荐 */
tinyint(1) account_no_locked /* 账户是否被锁定 */
text description /* 个人简介 */
timestamp created_at /* 创建时间 */
timestamp updated_at /* 更新时间 */
bigint unsigned id /* 主键 */
}
node0 --|> node0
node5 --|> node2
node1 --|> node0
node1 --|> node3
node6 --|> node3
node6 --|> node4
```
### oa_user 数据表 ### oa_user 数据表
@ -105,7 +190,7 @@ public interface GeneralMapper {
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: |
| 1 | `id` | 主键 | bigint unsigned | PRI | NO | auto_increment | | | 1 | `id` | 主键 | bigint unsigned | PRI | NO | auto_increment | |
| 2 | `job_id` | 工作ID正则表达 "^[STU\|TEA\|OTH][0-9]{7}" | char(10) | UNI | NO | | | | 2 | `job_id` | 工作ID正则表达 "^\[STU\|TEA\|OTH\]\[0-9\]{7}" | char(10) | UNI | NO | | |
| 3 | `username` | 用户名 | varchar(40) | UNI | NO | | | | 3 | `username` | 用户名 | varchar(40) | UNI | NO | | |
| 4 | `password` | 密码 | varchar(255) | | NO | | | | 4 | `password` | 密码 | varchar(255) | | NO | | |
| 5 | `address` | 用户家庭地址 | varchar(255) | | NO | | | | 5 | `address` | 用户家庭地址 | varchar(255) | | NO | | |
@ -131,12 +216,16 @@ public interface GeneralMapper {
#### 说明 #### 说明
> 【角色表】包含所有的角色(目前主要为三个,学生、老师、管理员)
#### 数据表字段属性 #### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: |
| 1 | `id` | 角色id | int unsigned | PRI | NO | auto_increment | | | 1 | `id` | 角色id | int unsigned | PRI | NO | auto_increment | |
| 2 | `role_name` | 角色名称 | varchar(20) | | NO | | | | 2 | `role_name` | 角色名称 | varchar(20) | | NO | | |
| 3 | `created_at` | 创建时间 | timestamp | | NO | DEFAULT_GENERATED | CURRENT_TIMESTAMP |
| 4 | `updated_at` | 修改时间 | timestamp | | YES | | |
@ -144,10 +233,12 @@ public interface GeneralMapper {
#### 说明 #### 说明
> 【权限表】所有的权限,具体到每一个功能
#### 数据表字段属性 #### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
| :--: | :----------: | :------------------------: | :-------------: | :--: | :--: | :------------: | :----: | | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: |
| 1 | `id` | 主键 | bigint unsigned | PRI | NO | auto_increment | | | 1 | `id` | 主键 | bigint unsigned | PRI | NO | auto_increment | |
| 2 | `pid` | 权限父id | bigint unsigned | MUL | YES | | | | 2 | `pid` | 权限父id | bigint unsigned | MUL | YES | | |
| 3 | `name` | 权限名称 | varchar(100) | | NO | | | | 3 | `name` | 权限名称 | varchar(100) | | NO | | |
@ -159,26 +250,47 @@ public interface GeneralMapper {
### oa_role_user 数据表 ### oa_role_user 数据表
#### 说明
> 【用户角色分配表】为用户赋予默认权限属性的内容
#### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
| :--: | :---: | :----: | :-------------: | :--: | :--: | :--: | :----: | | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: |
| 1 | `uid` | 用户id | bigint unsigned | PRI | NO | | | | 1 | `uid` | 用户id | bigint unsigned | PRI | NO | | |
| 2 | `rid` | 角色id | int unsigned | MUL | NO | | | | 2 | `rid` | 角色id | int unsigned | MUL | NO | | |
| 3 | `createdt_at` | 创建时间 | timestamp | | NO | DEFAULT_GENERATED | CURRENT_TIMESTAMP |
| 4 | `updated_at` | 修改时间 | timestamp | | YES | | |
### oa_role_permissions 数据表 ### oa_role_permissions 数据表
#### 说明
> 【角色权限表】为角色赋予指定权限操作
#### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
| :--: | :---: | :----: | :-------------: | :--: | :--: | :--: | :----: | | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: |
| 1 | `rid` | 角色id | int unsigned | PRI | NO | | | | 1 | `rid` | 角色id | int unsigned | PRI | NO | | |
| 2 | `pid` | 权限id | bigint unsigned | MUL | NO | | | | 2 | `pid` | 权限id | bigint unsigned | MUL | NO | | |
| 3 | `created_at` | 创建时间 | timestamp | | NO | DEFAULT_GENERATED | CURRENT_TIMESTAMP |
### oa_project 数据表 ### oa_project 数据表
#### 说明
> 【项目表】用于存放项目相关内容
#### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
| :--: | :----------------: | :----------------------: | :--------------: | :--: | :--: | :------------: | :----: | | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: |
| 1 | `id` | 项目id | bigint unsigned | PRI | NO | auto_increment | | | 1 | `id` | 项目id | bigint unsigned | PRI | NO | auto_increment | |
| 2 | `name` | 项目名称 | varchar(255) | | NO | | | | 2 | `name` | 项目名称 | varchar(255) | | NO | | |
| 3 | `description` | 一句话描述 | varchar(255) | | NO | | | | 3 | `description` | 一句话描述 | varchar(255) | | NO | | |
@ -195,8 +307,14 @@ public interface GeneralMapper {
### oa_project_type 数据表 ### oa_project_type 数据表
#### 说明
> 【项目类型表】用于存放项目种类的种类分类表
#### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
| :--: | :----------: | :--------: | :----------: | :--: | :--: | :---------------: | :---------------: | | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: |
| 1 | `id` | 项目类型id | int unsigned | PRI | NO | auto_increment | | | 1 | `id` | 项目类型id | int unsigned | PRI | NO | auto_increment | |
| 2 | `name` | 类型名字 | varchar(50) | | NO | | | | 2 | `name` | 类型名字 | varchar(50) | | NO | | |
| 3 | `created_at` | 创建时间 | timestamp | | NO | DEFAULT_GENERATED | CURRENT_TIMESTAMP | | 3 | `created_at` | 创建时间 | timestamp | | NO | DEFAULT_GENERATED | CURRENT_TIMESTAMP |
@ -204,13 +322,39 @@ public interface GeneralMapper {
### oa_user_project 数据表 ### oa_project_cutting 数据表
#### 说明
#### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
| :--: | :----------: | :--------------: | :-------------: | :--: | :--: | :---------------: | :---------------: | | :--: | :--------------: | :--------------: | :--------------: | :--: | :--: | :---------------: | :---------------: |
| 1 | `id` | 主键 | bigint unsigned | PRI | NO | auto_increment | |
| 2 | `pid` | 项目id | bigint unsigned | MUL | NO | | |
| 3 | `name` | 项目分割模块名字 | varchar(40) | | NO | | |
| 4 | `tag` | 模块标签 | json | | YES | | |
| 5 | `engineering` | 工程量计算 | tinyint unsigned | | NO | | 1 |
| 6 | `estimated_time` | 预估时间(小时) | int unsigned | | NO | | 3 |
| 7 | `real_time` | 实际时间 | timestamp | | YES | | |
| 8 | `created_at` | 创建时间 | timestamp | | NO | DEFAULT_GENERATED | CURRENT_TIMESTAMP |
| 9 | `updated_at` | 修改时间 | timestamp | | YES | | |
### oa_project_user 数据表
#### 说明
> 【用户项目分配表】用于存放用户所分配到的子项目内容
#### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: |
| 1 | `id` | 主键id | bigint unsigned | PRI | NO | auto_increment | | | 1 | `id` | 主键id | bigint unsigned | PRI | NO | auto_increment | |
| 2 | `uid` | 用户id | bigint unsigned | MUL | NO | | | | 2 | `uid` | 用户id | bigint unsigned | MUL | NO | | |
| 3 | `pid` | 接到分割项目内容 | bigint unsigned | | NO | | | | 3 | `pid` | 接到分割项目内容 | bigint unsigned | MUL | NO | | |
| 4 | `created_at` | 创建时间 | timestamp | | NO | DEFAULT_GENERATED | CURRENT_TIMESTAMP | | 4 | `created_at` | 创建时间 | timestamp | | NO | DEFAULT_GENERATED | CURRENT_TIMESTAMP |
| 5 | `updated_at` | 修改时间 | timestamp | | YES | | | | 5 | `updated_at` | 修改时间 | timestamp | | YES | | |
@ -218,8 +362,12 @@ public interface GeneralMapper {
### oa_config 数据表 ### oa_config 数据表
#### 说明
#### 数据表字段属性
| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | | 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 |
| :--: | :----------: | :--------: | :-------------: | :--: | :--: | :---------------: | :---------------: | | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: |
| 1 | `id` | 主键 | bigint unsigned | PRI | NO | auto_increment | | | 1 | `id` | 主键 | bigint unsigned | PRI | NO | auto_increment | |
| 2 | `value` | 调用关键字 | varchar(50) | UNI | NO | | | | 2 | `value` | 调用关键字 | varchar(50) | UNI | NO | | |
| 3 | `data` | json数据 | json | | YES | | | | 3 | `data` | json数据 | json | | YES | | |

View File

@ -146,14 +146,8 @@ CREATE TABLE `oa_user` (
-- --
-- 表的结构 `oa_user_project` -- 表的结构 `oa_user_project`
-- --
-- 读取表 organize_oa.oa_user_project 的结构时出错: #1146 - Table 'organize_oa.oa_user_project' doesn't exist
CREATE TABLE `oa_user_project` ( -- 读取表 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
`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='用户项目表';
-- --
-- 转储表的索引 -- 转储表的索引
@ -216,13 +210,6 @@ ALTER TABLE `oa_user`
ADD UNIQUE KEY `oa_user_phone_uindex` (`phone`), ADD UNIQUE KEY `oa_user_phone_uindex` (`phone`),
ADD UNIQUE KEY `oa_user_username_uindex` (`username`); ADD UNIQUE KEY `oa_user_username_uindex` (`username`);
--
-- 表的索引 `oa_user_project`
--
ALTER TABLE `oa_user_project`
ADD PRIMARY KEY (`id`),
ADD KEY `oa_user_project_oa_user_id_fk` (`uid`);
-- --
-- 在导出的表使用AUTO_INCREMENT -- 在导出的表使用AUTO_INCREMENT
-- --
@ -263,12 +250,6 @@ ALTER TABLE `oa_role`
ALTER TABLE `oa_user` ALTER TABLE `oa_user`
MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键'; MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键';
--
-- 使用表AUTO_INCREMENT `oa_user_project`
--
ALTER TABLE `oa_user_project`
MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键id';
-- --
-- 限制导出的表 -- 限制导出的表
-- --
@ -283,27 +264,21 @@ ALTER TABLE `oa_permissions`
-- 限制表 `oa_project` -- 限制表 `oa_project`
-- --
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`); ADD CONSTRAINT `oa_project_oa_project_type_id_fk` FOREIGN KEY (`type`) REFERENCES `oa_project_type` (`id`) ON UPDATE CASCADE;
-- --
-- 限制表 `oa_role_permissions` -- 限制表 `oa_role_permissions`
-- --
ALTER TABLE `oa_role_permissions` ALTER TABLE `oa_role_permissions`
ADD CONSTRAINT `oa_role_permissions_oa_permissions_id_fk` FOREIGN KEY (`pid`) REFERENCES `oa_permissions` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `oa_role_permissions_oa_permissions_id_fk` FOREIGN KEY (`pid`) REFERENCES `oa_permissions` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `oa_role_permissions_oa_role_id_fk` FOREIGN KEY (`rid`) REFERENCES `oa_role` (`id`) ON DELETE CASCADE; ADD CONSTRAINT `oa_role_permissions_oa_role_id_fk` FOREIGN KEY (`rid`) REFERENCES `oa_role` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- --
-- 限制表 `oa_role_user` -- 限制表 `oa_role_user`
-- --
ALTER TABLE `oa_role_user` ALTER TABLE `oa_role_user`
ADD CONSTRAINT `oa_role_user_oa_role_id_fk` FOREIGN KEY (`rid`) REFERENCES `oa_role` (`id`), ADD CONSTRAINT `oa_role_user_oa_role_id_fk` FOREIGN KEY (`rid`) REFERENCES `oa_role` (`id`),
ADD CONSTRAINT `oa_role_user_oa_user_id_fk` FOREIGN KEY (`uid`) REFERENCES `oa_user` (`id`) ON DELETE CASCADE; ADD CONSTRAINT `oa_role_user_oa_user_id_fk` FOREIGN KEY (`uid`) REFERENCES `oa_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- 限制表 `oa_user_project`
--
ALTER TABLE `oa_user_project`
ADD CONSTRAINT `oa_user_project_oa_user_id_fk` FOREIGN KEY (`uid`) REFERENCES `oa_user` (`id`);
COMMIT; COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;