CRL Team——项目系统设计与数据库设计

CRLTeam 2025-10-20 17:02:56
这个作业属于哪个课程2501_CS_SE_FZU
这个作业要求在哪里团队作业——概要设计和数据库设计
团队名称CRL Team
这个作业的目标系统设计、数据库设计、安全和权限设计
其他参考文献《数据库完整性的应用探索》

目录

  • 1 作业要求文件链接
  • 1.1 GitCode团队仓库链接
  • 1.2《系统设计说明书》
  • 1.3《数据库设计说明书》
  • 1.4《系统设计和数据库设计答辩PPT》
  • 2 系统和数据库设计
  • 2.1体系结构设计
  • 2.2功能模块层次图
  • 2.3ER分析
  • 2.1 ER 图分析
  • 2.4表结构设计
  • 3 类图、系统安全和权限设计
  • 3.1设计类图
  • 3.2系统安全
  • 3.2.1 安全性保障
  • 用户身份验证
  • 数据安全保护
  • 输入验证与请求安全
  • 系统健壮性设计
  • 平台兼容性
  • 智能异常处理
  • 服务稳定性保障
  • 用户体验优化
  • 持续优化与质量保障
  • 3.3 系统权限设计
  • 4 改进分析
  • 5 团队绩效

1 作业要求文件链接

1.1 GitCode团队仓库链接

GitCode团队仓库链接

1.2《系统设计说明书》

《系统设计说明书》

1.3《数据库设计说明书》

《数据库设计说明书》

1.4《系统设计和数据库设计答辩PPT》

《系统设计和数据库设计答辩PPT》

2 系统和数据库设计

2.1体系结构设计

技术框架层次结构
层次结构上,项目分为前端展示层、后端业务逻辑层与数据存储层。前端通过 API 接口与
后端通信,后端 Controller 层接收请求并分发,Service 层处理复杂业务逻辑(如调用智能
错题分析的 Agent 智能体流程),DAO 层负责与 MySQL 等数据存储交互。

img

技术架构图

本项目总体设计融合多种技术架构,以满足高效、稳定的运行需求。
前端采用 Nginx 作为反向代理服务器,实现静态资源(HTML、CSS 等)托管,提升加
载速度,同时负责动态 API 请求转发至后端,支持后期负载均衡与高可用扩展。
后端基于 Spring Boot 三层架构(Controller 层处理请求、Service 层封装业务逻辑、
DAO 层借助 MyBatis 操作 MySQL),并利用 Spring Task 执行定时任务(如数据同步、学
习提醒)。
数据存储采用多元化方案:MySQL 存储核心结构化数据(用户信息、学习计划等);
Elasticsearch 提供学习社区高性能搜索;MinIO 实现文件资源(文档、音视频等)的存储与
在线预览;Redis 缓存热点数据(登录状态、帖子热度等),并用 zset 助力个性化推荐。通
过 RabbitMQ 消息队列 实现异步解耦,处理邮件通知、用户行为记录等场景。

2.2功能模块层次图

项目分为四大功能模块:账号管理模块、学习计划模块、学习社区模块、文件资源模块

img

功能模块总览图

其中各模块的层次结构如图:

img

账号管理模块

img

学习计划模块

img

学习社区模块

2.3ER分析

2.1 ER 图分析

系统核心实体及关系如下:

  • 用户(User):系统的核心实体,与其他多数实体存在关联。
    • 一对多关系:
      • 用户与帖子(一个用户可发布多个帖子)
      • 用户与评论(一个用户可发表多个评论)
      • 用户与帖子点赞(一个用户可点赞多个帖子)
      • 用户与评论点赞(一个用户可点赞多个评论)
      • 用户与帖子收藏(一个用户可收藏多个帖子)
      • 用户与帖子图片(一个用户可上传多个帖子图片)
      • 用户与标签(一个用户可创建多个标签)
      • 用户与文件夹(一个用户可创建多个文件夹)
      • 用户与文件(一个用户可拥有多个文件)
      • 用户与计划(一个用户可创建多个计划)
      • 用户与计划分类(一个用户可创建多个计划分类)
      • 用户与子任务(一个用户可创建多个子任务)
      • 用户与用户头像(一个用户可拥有多个头像记录)等
    • 一对一关系:
      • 用户与用户统计(一个用户对应一条统计信息)
      • 用户与用户存储(一个用户对应一条存储信息)

img

  • 帖子(CommunityPost):社区核心内容实体。
    • 一对多关系:
      • 帖子与评论(一个帖子可有多条评论)
      • 帖子与帖子点赞(一个帖子可被多个用户点赞)
      • 帖子与帖子收藏(一个帖子可被多个用户收藏)
      • 帖子与帖子图片(一个帖子可包含多张图片)
    • 多对多关系:
      • 帖子与标签(通过帖子标签关联表实现,一个帖子可关联多个标签,一个标签可被多个帖子使用)

img

  • 评论(CommunityPostComment):关联帖子和用户,支持评论间的层级关系(父评论与子评论)。
    • 一对多关系:
      • 评论与评论点赞(一条评论可被多个用户点赞)

img

  • 文件夹(FileFolder)与文件(FileMeta):构成文件管理的层级结构。
    • 一对多关系:
      • 文件夹与子文件夹(通过父节点 ID 实现层级)
      • 文件夹与文件(一个文件夹可包含多个文件)
    • 特殊文件夹与文件:
      • 错题文件夹(FileFolderMistake)与错题文件(FileMetaMistake)为专项文件管理,逻辑关系类似普通文件夹与文件

img

  • 计划(Plan):关联用户和计划分类。
    • 一对多关系:
      • 计划与子任务(一个计划可包含多个子任务)
    • 多对一关系:
      • 计划与计划分类(多个计划可属于一个分类)

img

  • 权限(FilePermission):关联文件 / 文件夹、所有者用户与访问者用户,控制资源访问权限。

    2.4表结构设计

在 Ctrl+Learn 学习社区平台中,数据库设计紧扣三大核心模块共 21 张表。其中三大核心模块的表格为:community_post 表支撑学习社区的交流功能,记录用户发帖的标题、内容、互动数据等;file_meta 表管理用户上传的学习资料,支持权限控制、文件分组与共享;plan 表用于学习计划的制定与跟踪,涵盖任务内容、时间设置和完成状态。
帖子表

img

文件表

img

学习计划表

img

三张表共同构建了内容发布、资源管理与学习规划的完整闭环,支撑平台的个性化学习
与资源共享功能。
具体的表逻辑结构如下:
1 用户相关表

表名中文注释主键字段名称类型约束中文注释
user用户表idchar(32)NOT NULL, PRIMARY KEY用户 ID
usernamevarchar(20)NOT NULL, UNIQUE用户名
passwordvarchar(100)NULL密码
phonevarchar(11)NULL电话号码
imgvarchar(100)NOT NULL头像路径
create_timedatetimeNULL创建时间
statuscharNOT NULL, DEFAULT '1'用户状态(1 启用,2 禁用)
roleintNOT NULL, DEFAULT 1用户角色(1 普通用户,2 会员)
user_head用户头像表idbigintNOT NULL, PRIMARY KEY, 自增主键
user_idchar(32)NOT NULL用户 ID
head_urlvarchar(100)NULL头像 URL
create_timedatetimeNOT NULL创建时间
user_statistics用户交互信息统计-idchar(32)NULL主键(关联用户 ID)
open_file_viewbigintDEFAULT 0公开文件被浏览次数
total_likebigintDEFAULT 0总点赞数
open_file_previewbigintNOT NULL, DEFAULT 0公开文件访问量
open_file_downloadbigintNOT NULL, DEFAULT 0公开文件下载量
user_storage用户存储表idchar(32)NOT NULL, PRIMARY KEY用户 ID
total_sizedoubleNOT NULL, DEFAULT 100总存储空间 (MB)
used_sizedoubleNOT NULL, DEFAULT 0已使用存储空间 (MB)
update_timedatetimeNOT NULL, 自动更新更新时间

2 社区帖子相关表

表名中文注释主键字段名称类型约束中文注释
community_post帖子表idbigintNOT NULL, PRIMARY KEY, 自增主键
user_idchar(32)NOT NULL用户 ID
titlevarchar(100)NOT NULL帖子标题
contenttextNOT NULL帖子文本内容
create_timedatetimeNOT NULL创建时间
like_countintNOT NULL, DEFAULT 0点赞数
favorite_countintNOT NULL收藏数
comment_countintNOT NULL, DEFAULT 0评论数
statusintNULL帖子状态(0 未发布,1 已发布)
community_post_comment帖子评论表idbigintNOT NULL, PRIMARY KEY, 自增主键
post_idbigintNULL帖子 ID
parent_idintNOT NULL, DEFAULT 0父评论 ID(0 为一级评论)
user_idchar(32)NOT NULL用户 ID
contentvarchar(300)NULL评论内容
like_countintNULL点赞数
create_timedatetimeNULL创建时间
reply_user_idchar(32)NULL回复用户 ID
community_post_comment_like帖子评论点赞表idbigintNOT NULL, PRIMARY KEY, 自增主键
user_idchar(32)NULL用户 ID
comment_idbigintNULL评论 ID
create_timedatetimeNULL创建时间
community_post_favorite帖子收藏表idbigintNOT NULL, PRIMARY KEY, 自增主键
post_idbigintNULL帖子 ID
user_idchar(32)NULL用户 ID
create_timedatetimeNULL创建时间
community_post_img帖子图片表idbigintNOT NULL, PRIMARY KEY, 自增主键
img_urlvarchar(200)NULL图片网址
post_idbigintNULL帖子 ID
user_idvarchar(32)NULL用户 ID
community_post_like帖子点赞表idbigintNOT NULL, PRIMARY KEY, 自增主键
post_idbigintNOT NULL帖子 ID
user_idchar(32)NOT NULL用户 ID
create_timedatetimeNOT NULL创建时间
community_post_tag标签表idbigintNOT NULL, PRIMARY KEY, 自增主键
namevarchar(50)NOT NULL, UNIQUE标签名称
create_user_idchar(32)NOT NULL创建标签的用户 ID
create_timedatetimeNOT NULL创建标签的时间
usage_countintNOT NULL标签被帖子使用次数
community_post_tag_relate帖子标签关联表idbigintNOT NULL, PRIMARY KEY, 自增主键
post_idbigintNOT NULL帖子 ID
tag_idbigintNOT NULL标签 ID

3 文件管理相关表

表名中文注释主键字段名称类型约束中文注释
file_folder文件夹表idbigintNOT NULL, PRIMARY KEY, 自增主键
user_idchar(32)NOT NULL用户 ID
folder_namevarchar(20)NULL文件夹名称
parent_idbigintNULL父节点 ID(层级关系)
levelintNOT NULL文件夹层级
is_shareintNOT NULL, DEFAULT 0是否共享(0 不共享,1 共享)
is_openintNULL, DEFAULT 0公开权限(0 不公开,2 公开可预览可下载)
create_timedatetimeNOT NULL创建时间
file_folder_mistake错题文件夹idbigintNOT NULL, PRIMARY KEY, 自增主键
folder_namevarchar(50)NOT NULL错题文件夹名称
user_idchar(32)NULL用户 ID
create_timedatetimeNULL创建时间
file_meta文件表idbigintNOT NULL, PRIMARY KEY, 自增主键
user_idchar(32)NOT NULL用户 ID
parent_idbigintNULL所属文件夹 ID
file_namevarchar(50)NOT NULL文件名称
file_sizedoubleNOT NULL文件大小(MB)
create_timedatetimeNOT NULL, 自动更新创建时间
is_deleteintNOT NULL, DEFAULT 0是否删除(0 未删除,1 删除)
delete_timedatetimeNULL删除日期
is_openintNOT NULL文件权限(0 不公开,1 公开可预览,2 公开可预览可下载)
is_shareintNULL, DEFAULT 0是否共享文件夹(0 否,1 是)
file_meta_mistake错题文件idbigintNOT NULL, PRIMARY KEY, 自增主键
file_namevarchar(50)NOT NULL文件名称
file_sizedoubleNULL文件内存大小(MB)
folder_idbigintNOT NULL文件夹 ID
user_idchar(32)NULL用户 ID
create_timedatetimeNULL创建时间
file_permission文件权限表idbigintNOT NULL, PRIMARY KEY, 自增主键
file_idbigintNULL文件 ID
visit_user_idchar(32)NOT NULL访问者用户 ID
folder_idbigintNULL文件夹 ID
permissionintNULL权限(1 可预览,2 预览下载,3 管理员)
create_timedatetimeNULL创建时间
host_user_idchar(32)NOT NULL文件所有用户 ID
typeintNOT NULL权限类型(1 文件权限,2 文件夹权限)
file_preview文件预览表idbigintNOT NULL, PRIMARY KEY主键
initial_file_idbigintNOT NULL原始文件 ID
preview_file_namevarchar(50)NOT NULL预览文件名称
create_timedatetimeNULL创建时间

4 计划任务相关表

表名中文注释主键字段名称类型约束中文注释
plan计划表idbigintNOT NULL, PRIMARY KEY, 自增主键
plan_namevarchar(20)NOT NULL计划标题
category_idbigintNOT NULL分类 ID
labelvarchar(10)NULL标签
start_timedatetimeNOT NULL开始时间
overdue_timedatetimeNOT NULL逾期时间
remind_timedatetimeNULL提醒时间
remarkvarchar(200)NULL备注
user_idvarchar(32)NOT NULL用户 ID
create_timedatetimeNOT NULL创建时间
is_completeintNOT NULL完成状态(0 未完成,1 已完成)
complete_timedatetimeNULL完成时间
plan_category计划分类表idbigintNOT NULL, PRIMARY KEY, 自增主键
category_namevarchar(10)NOT NULL分类名称
user_idvarchar(32)NOT NULL用户 ID
create_timedatetimeNOT NULL创建时间
plan_sub子任务表idbigintNOT NULL, PRIMARY KEY, 自增主键
namevarchar(20)NOT NULL子任务名称
create_timedatetimeNULL创建时间
parent_idbigintNOT NULL父任务 ID
is_completeintNOT NULL是否完成(0 未完成,1 已完成)
user_idvarchar(32)NOT NULL用户 ID
complete_timedatetimeNULL完成时间

3 类图、系统安全和权限设计

3.1设计类图

•关联关系:
◦User 与 Plan:一对多(1 个用户可创建多个学习计划),通过userId外键关联;
◦User 与 FileMeta:一对多(1 个用户可上传多个文件),通过userId外键关联;
◦User 与 CommunityPost:一对多(1 个用户可发布多个帖子),通过userId外键关联;
◦FileMeta 与 AIAnalysis:一对一(1 个错题文件对应 1 份 AI 分析报告),通过fileId外键关联。
•依赖关系:
◦Plan 依赖 EbbinghausUtil 工具类:Plan 的generateEbbinghausCycle()方法需调用 EbbinghausUtil 的calculateCycle(startTime)方法生成复习周期;
◦AIAnalysis 依赖 AgentService:AIAnalysis 的analyzeErrorFile()方法需调用 AgentService 的executeTool(fileId)方法触发 MinIO 文件读取与大模型分析;
◦CommunityPost 依赖 ElasticSearchService:CommunityPost 的searchPost()方法需调用 ElasticSearchService 的queryPost(keyword)方法实现高性能搜索。
•聚合关系:
Category 的categoryId,删除分类时需先处理关联的 Plan(如迁移至 “默认分类”)

类图如下所示:

img

3.2系统安全

3.2.1 安全性保障

用户身份验证

Ctrl+Learn 平台采用多层次身份验证机制,确保系统访问安全:

  1. 多方式账号登录

    • 支持手机号+密码登录,系统验证通过后进入学习主界面
    • 邮箱验证登录,提供备用登录通道
    • 第三方教育平台OAuth集成(可选)
  2. 密码安全机制

    • 支持用户定期修改密码,需验证旧密码后设置新密码
    • 密码强度检测,要求包含字母、数字、特殊字符组合
    • 密码错误次数限制,防止暴力破解
  3. 分级登录控制

    • 学生端:个人学习账号登录,访问个性化学习空间
    • 教师端:独立教师账号,具备班级管理权限
    • 管理员端:专用管理员账号,严格权限控制
  4. 会话安全管理

    • JWT Token无状态认证,支持分布式会话
    • 安全退出机制,清除客户端认证信息
    • 会话超时自动失效,防止账号被滥用
数据安全保护

为保护用户学习数据隐私与安全,平台实施全面数据保护措施:

  1. 全链路数据加密

    • 用户密码、个人身份信息采用BCrypt强加密存储
    • 敏感数据传输全程HTTPS加密,防止中间人攻击
    • 数据库字段级加密,关键学习数据额外保护
  2. 学习内容审核机制

    • 用户上传的学习笔记、社区帖子进行AI自动审核
    • 结合人工审核,拦截违规内容(不当言论、侵权资料等)
    • 文件类型安全检查,防止恶意文件上传
  3. 数据备份与容灾

    • 定时自动数据库备份,保留多个历史版本
    • 异地容灾备份机制,确保数据不丢失
    • 快速数据恢复流程,最大限度减少服务中断
  4. 权限隔离设计

    • 学生、教师、管理员数据访问严格隔离
    • 文件资源权限控制,防止越权访问
    • API接口级权限验证,确保数据边界清晰
输入验证与请求安全
  1. 全方位输入校验

    • 所有用户输入(搜索词、评论、笔记内容)进行合法性验证
    • SQL注入防护,使用参数化查询和ORM框架
    • XSS脚本攻击防范,输入输出双重转义
  2. 文件上传安全控制

    • 限制上传文件类型(PDF、DOC、图片等教育相关格式)
    • 文件大小限制,防止资源滥用
    • 病毒扫描机制,确保上传文件安全
  3. API安全防护

    • 所有请求需携带身份令牌进行鉴权
    • API访问频率限制,防止恶意爬取
    • 敏感操作二次验证,提升安全等级
系统健壮性设计
平台兼容性
  1. 多终端全面支持

    • Web端支持所有主流浏览器(Chrome、Firefox、Safari、Edge)
    • 未来支持微信小程序,扩展使用场景
  2. 自适应界面设计

    • 响应式布局,自动适配不同屏幕尺寸
    • 关键学习功能在移动端优先优化
    • 离线学习支持,网络波动时基础功能可用
智能异常处理
  1. 用户友好的错误提示

    • 系统异常时提供清晰易懂的提示信息
    • 避免技术术语直接暴露给终端用户
    • 提供问题解决方案或客服联系途径
  2. 完善的日志系统

    • 全链路请求日志,便于问题追踪
    • 异常行为监控与告警机制
    • 性能指标日志,支持系统优化分析
  3. 标准化状态管理

    • 统一HTTP状态码规范,便于前端处理
    • 错误信息结构化返回,支持多语言
    • 业务状态码体系,精准定位问题类型
服务稳定性保障
  1. 高可用架构设计

    • 服务端多节点部署,负载均衡自动分发
    • 数据库主从复制,读写分离提升性能
    • 关键服务集群化,单点故障自动切换
  2. 数据持久化策略

    • 用户学习进度实时保存,防止数据丢失
    • 异步数据同步,提升系统响应速度
    • 事务一致性保证,关键操作原子性
  3. 资源优化管理

    • 数据库连接池管理,避免连接泄漏
    • Redis缓存分级策略,热点数据快速访问
    • 内存使用监控,及时回收无用资源
用户体验优化
  1. 界面设计原则

    • 简洁直观的学习界面,减少认知负荷
    • 功能入口清晰分类,操作路径最短
    • 学习进度可视化,激励持续学习
  2. 智能服务稳定性

    • AI分析服务容错机制,模型异常时降级处理
    • 推荐算法鲁棒性设计,数据不全时提供基础推荐
    • 学习计划生成备用方案,确保服务持续可用
持续优化与质量保障
  1. 迭代开发流程

    • 定期代码重构,保持技术债务可控
    • 性能瓶颈持续优化,提升系统响应速度
    • 技术栈渐进升级,平衡稳定性与先进性
  2. 全流程质量测试

    • 单元测试覆盖核心业务逻辑
    • 压力测试保障系统承载能力
    • 兼容性测试确保多环境稳定运行

3.3 系统权限设计

权限模块具体权限说明
个人信息管理查看和编辑个人资料、学习偏好设置、修改密码和安全设置、管理学习目标和个人标签
学习计划管理创建个性化学习计划、调整学习进度和复习周期、查看学习数据统计和分析报告
文件资源管理上传个人学习资料(PDF、笔记等)、创建和管理文件分类标签、设置文件共享权限、使用智能文档解析
AI学习分析提交错题进行智能分析、查看知识点缺陷诊断报告、接收个性化学习建议、使用学习效果预测
社区学习互动发布学习笔记和问题求助、评论和点赞他人内容、关注优秀学习者和教师、参与学习话题讨论
学习成果管理查看个人学习进度图谱、管理错题本和重点标记、导出学习报告和数据、参与学习成就系统

这套完整的安全与权限设计确保了Ctrl+Learn平台在提供强大学习功能的同时,保障了用户数据安全和使用体验,为K12和大学生群体创造一个安全、可靠、高效的学习环境。

4 改进分析

针对上次需求分析中所存在的问题,我们对类图、系统安全和权限设计进行了完善,讨论补充了系统安全和权限设计上的内容,体现在博客中。

5 团队绩效

学号工作内容贡献度
102300231博客随笔、系统设计和数据库设计答辩PPT15%
102300230系统设计说明书、GitCode团队仓库15%
102300232评审表、审核修改系统设计和数据库设计说明书14%
102300227系统设计和数据库设计答辩PPT14%
052301436数据库设计说明书14%
292300206数据库设计说明书14%
082300207系统设计说明书14%

本次作业我们小组以线下会议进行讨论,根据每个人的擅长之处进行了任务的划分,并对上次的作业反馈情况进行总结。

img

...全文
137 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文围绕“新型电力系统下多分布式电源接入配电网承载力评估方法”的研究,系统性地介绍了基于Matlab的仿真建模与代码实现方案,旨在评估高比例分布式电源(如光伏、风电等)接入背景下配电网的接纳能力。研究融合了智能优化算法(如蜣螂优化、灰狼优化、遗传算法)、多目标优化、鲁棒优化及双层优化模型,结合潮流计算、稳定性分析与故障仿真,构建了完整的承载力评估体系。文档不仅提供核心算法实现,还拓展至微电网调度、储能配置、电氢耦合系统、电动汽车协同等前沿方向,强调“复现+创新”相结合的科研路径,助力研究者快速掌握高水平论文复现技巧并激发原创思路。; 适合人群:具备电力系统、自动化或相关专业背景,熟悉Matlab/Simulink仿真环境,正在从事科研或工程应用的研究生及初级科研人员(工作1-3年);; 使用场景及目标:①复现高水平期刊中关于配电网承载力的优化模型;②开展高比例可再生能源接入下的配电网规划与运行研究;③学习并应用智能优化算法解决复杂电力系统问题;④获取完整科研资源包以加速课题进展与论文撰写; 阅读建议:建议读者关注公众号“荔枝科研社”获取网盘资源,下载全套代码与模型文件,按照文档结构循序渐进学习,重点理解算法设计逻辑与仿真建模细节,结合所提供的复现案例深化对优化模型与工程应用场景的理解,提升科研效率与创新能力。

103

社区成员

发帖
与我相关
我的任务
社区描述
2501_CS_SE_FZU
软件工程 高校
社区管理员
  • FZU_SE_LQF
  • 木村修
  • 心态773
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧