后端
我的博客项目架构关系详解
久流
2026年06月11日 0 评论 博客
一、模块架构图
graph TD
subgraph 用户管理模块["用户管理模块"]
SysUser[用户 SysUser]
SysRole[角色 SysRole]
SysPermission[权限 SysPermission]
SysPermissionGroup[权限组 SysPermissionGroup]
SysUserRole[(用户角色关联)]
SysRolePermission[(角色权限关联)]
SysRolePermissionGroup[(角色权限组关联)]
SysPermissionGroupItem[(权限组项关联)]
end
subgraph 博客模块["博客模块"]
SysBlog[博客文章 SysBlog]
SysCategory[分类 SysCategory]
SysComment[评论 SysComment]
SysOssImage[OSS图片 SysOssImage]
end
subgraph 配置模块["配置模块"]
SysConfig[系统配置 SysConfig]
SysSeo[SEO配置 SysSeo 已禁用]
SysFriendLink[友情链接 SysFriendLink]
end
%% 用户管理内部关系
SysUser -->|拥有| SysUserRole
SysRole -->|分配给| SysUserRole
SysRole -->|拥有| SysRolePermission
SysPermission -->|被分配| SysRolePermission
SysRole -->|拥有| SysRolePermissionGroup
SysPermissionGroup -->|被分配| SysRolePermissionGroup
SysPermission -->|属于| SysPermissionGroupItem
SysPermissionGroup -->|包含| SysPermissionGroupItem
%% 博客模块内部关系
SysCategory -->|包含| SysBlog
SysBlog -->|拥有| SysComment
SysComment -->|回复| SysComment
%% 跨模块关系
SysUser -->|作者| SysBlog
SysUser -->|评论者| SysComment
SysUser -->|上传者| SysOssImage
二、详细实体关系图
erDiagram
%% 实体定义 - 用户管理
SysUser {
bigint id PK "主键"
varchar username UK "用户名"
varchar nickname "昵称"
varchar password "密码"
varchar email UK "邮箱"
varchar avatar_url "头像URL"
tinyint status "状态"
tinyint is_deleted "删除标记"
datetime create_time "创建时间"
datetime update_time "更新时间"
}
SysRole {
bigint id PK
varchar code UK
varchar name
varchar description
tinyint is_super_admin
tinyint is_system
tinyint is_deleted
int sort_order
tinyint status
datetime create_time
datetime update_time
}
SysPermission {
bigint id PK
varchar code UK
varchar name
varchar description
int sort_order
datetime create_time
}
SysPermissionGroup {
bigint id PK
varchar name
varchar description
int sort_order
tinyint status
tinyint is_system
tinyint is_deleted
datetime create_time
datetime update_time
}
%% 关联表
SysUserRole {
bigint id PK
bigint user_id FK
bigint role_id FK
datetime create_time
}
SysRolePermission {
bigint id PK
bigint role_id FK
bigint permission_id FK
datetime create_time
}
SysRolePermissionGroup {
bigint id PK
bigint role_id FK
bigint group_id FK
datetime create_time
}
SysPermissionGroupItem {
bigint id PK
bigint group_id FK
bigint permission_id FK
int sort_order
datetime create_time
}
%% 实体定义 - 博客模块
SysBlog {
bigint id PK
bigint category_id FK
varchar title
varchar summary
longtext content_md
varchar cover_image
varchar tags
bigint author_id FK
int comment_count
tinyint is_hidden
tinyint is_top
tinyint is_recommend
tinyint is_deleted
datetime create_time
datetime update_time
}
SysCategory {
bigint id PK
varchar name
varchar description
int sort_order
datetime create_time
tinyint is_hidden
datetime update_time
}
SysComment {
bigint id PK
bigint blog_id FK
bigint parent_id FK
bigint user_id FK
varchar username
varchar email
varchar avatar_url
varchar website
text content
tinyint status
int like_count
varchar device_info
varchar ip_address
tinyint is_admin
tinyint is_deleted
datetime create_time
datetime update_time
}
SysOssImage {
bigint id PK
varchar hash
varchar original_name
varchar object_name
bigint file_size
bigint user_id FK
datetime create_time
}
%% 实体定义 - 配置模块
SysFriendLink {
bigint id PK
varchar name
varchar url
varchar summary
varchar remark
varchar image_url
int sort_order
tinyint status
tinyint is_deleted
datetime create_time
datetime update_time
}
SysSeo {
bigint id PK
varchar page_type
bigint page_id
varchar title
varchar keywords
varchar description
varchar og_title
varchar og_description
varchar og_image
varchar og_type
varchar canonical_url
varchar robots
tinyint is_deleted
tinyint is_system
datetime create_time
datetime update_time
}
SysConfig {
bigint id PK
varchar config_key
varchar config_value
varchar data_type
varchar validation_rule
varchar description
tinyint is_system
tinyint is_open
tinyint is_deleted
datetime create_time
datetime update_time
}
%% 关系定义
SysUser ||--o{ SysUserRole : "拥有"
SysRole ||--o{ SysUserRole : "分配给"
SysRole ||--o{ SysRolePermission : "拥有"
SysPermission ||--o{ SysRolePermission : "被分配"
SysRole ||--o{ SysRolePermissionGroup : "拥有"
SysPermissionGroup ||--o{ SysRolePermissionGroup : "被分配"
SysPermission ||--o{ SysPermissionGroupItem : "属于"
SysPermissionGroup ||--o{ SysPermissionGroupItem : "包含"
SysUser ||--o{ SysBlog : "发布"
SysCategory ||--o{ SysBlog : "分类"
SysBlog ||--o{ SysComment : "包含"
SysUser ||--o{ SysComment : "发表"
SysComment ||--o{ SysComment : "回复"
SysUser ||--o{ SysOssImage : "上传"
三、关系矩阵表
用户管理模块关系
| 关系类型 | 主实体 | 关联实体 | 关系说明 | 基数 |
|---|---|---|---|---|
| 用户角色 | SysUser | SysUserRole | 用户拥有角色 | 1:N |
| 角色分配 | SysRole | SysUserRole | 角色分配给用户 | 1:N |
| 角色权限 | SysRole | SysRolePermission | 角色拥有权限 | 1:N |
| 权限分配 | SysPermission | SysRolePermission | 权限分配给角色 | 1:N |
| 角色权限组 | SysRole | SysRolePermissionGroup | 角色拥有权限组 | 1:N |
| 权限组分配 | SysPermissionGroup | SysRolePermissionGroup | 权限组分配给角色 | 1:N |
| 权限归属 | SysPermission | SysPermissionGroupItem | 权限属于权限组 | 1:N |
| 权限组包含 | SysPermissionGroup | SysPermissionGroupItem | 权限组包含权限 | 1:N |
博客模块关系
| 关系类型 | 主实体 | 关联实体 | 关系说明 | 基数 |
|---|---|---|---|---|
| 作者关系 | SysUser | SysBlog | 用户发布文章 | 1:N |
| 分类关系 | SysCategory | SysBlog | 分类包含文章 | 1:N |
| 文章评论 | SysBlog | SysComment | 文章包含评论 | 1:N |
| 用户评论 | SysUser | SysComment | 用户发表评论 | 1:N |
| 评论回复 | SysComment | SysComment | 评论回复评论 | 1:N |
| 用户上传 | SysUser | SysOssImage | 用户上传图片 | 1:N |
四、实体分类汇总
| 模块 | 实体名称 | 表名 | 说明 |
|---|---|---|---|
| 核心业务 | 用户 | sys_user | 系统用户信息 |
| 博客文章 | sys_blog | 博客文章内容 | |
| 分类 | sys_category | 文章分类 | |
| 评论 | sys_comment | 文章评论 | |
| 权限管理 | 角色 | sys_role | 用户角色定义 |
| 权限 | sys_permission | 系统权限定义 | |
| 权限组 | sys_permission_group | 权限分组 | |
| 用户角色关联 | sys_user_role | 用户-角色关系 | |
| 角色权限关联 | sys_role_permission | 角色-权限关系 | |
| 角色权限组关联 | sys_role_permission_group | 角色-权限组关系 | |
| 权限组项关联 | sys_permission_group_item | 权限-权限组关系 | |
| 配置管理 | 系统配置 | sys_config | 系统参数配置 |
| SEO配置(已禁用) | sys_seo | 页面SEO设置 | |
| 其他 | 友情链接 | sys_friend_link | 友情链接管理 |
| OSS图片 | sys_oss_image | 图片存储记录 |
五、图表说明
- 矩形框:表示实体(数据库表)
- 圆角矩形框:表示模块分组
- 菱形框:表示关系(由Mermaid自动生成)
- PK:主键(Primary Key)
- FK:外键(Foreign Key)
- UK:唯一键(Unique Key)
- 1:N:一对多关系
- N:M:多对多关系(通过中间表实现)
六、实体关系流程图
flowchart LR
A[用户登录] --> B{验证权限}
B -->|通过| C[访问资源]
B -->|拒绝| D[返回错误]
subgraph 权限验证流程
B --> E[检查用户角色]
E --> F[检查角色权限]
F --> G[检查权限组]
end
subgraph 内容发布流程
H[创建文章] --> I[选择分类]
I --> J[上传图片]
J --> K[保存文章]
end
subgraph 评论流程
L[发表评论] --> M[审核状态]
M -->|通过| N[显示评论]
M -->|拒绝| O[隐藏评论]
end