110
社区成员
发帖
与我相关
我的任务
分享| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 202501 福大-软件工程实践-w 班 |
| 这个作业要求在哪里 | 概要设计和数据库设计 |
| 这个作业的目标 | 系统和数据库设计;类图、系统安全和权限设计;改进分析 |
1.1.1 体系结构设计

1.1.2 功能模块层次图

1.2.1 ER 图

1.2.2 表结构
users 表
1.user_id:INT,用户唯一标识。
2.username:VARCHAR(16),用户名。
3.password_hash:VARCHAR(255),加密密码。
4.email:VARCHAR(100),邮箱。
5.nickname:VARCHAR(16),昵称。
6.college_id:INT,所属学院 ID。
7.major_id:INT,所属专业 ID。
8.avatar_url:VARCHAR(255),头像 URL。
9.reputation_score:INT,信誉分。
10.role_id:INT,角色 ID。
roles 表
1.role_id:INT,角色 ID。
2.role_name:VARCHAR(50),角色名称。
3.description:VARCHAR(500),角色描述。
permissions 表
1.permission_id:INT,权限 ID。
2.permission_name:VARCHAR(50),权限名称。
3.description:VARCHAR(500),权限描述。
role_permissions 表
1.role_id:INT,角色 ID。
2.permission_id:INT,权限 ID。
colleges 表
1.college_id:INT,学院 ID。
2.college_name:VARCHAR(50),学院名称。
3.school:VARCHAR(50),所属学校。
majors 表
1.major_id:INT,专业 ID。
2.major_name:VARCHAR(50),专业名称。
3.college_id:INT,学院 ID。
courses 表
1.course_id:INT,课程 ID。
2.name:VARCHAR(100),课程名称。
3.teacher_id:INT,教师 ID。
5.credit:DECIMAL(2,1),学分。
6.major_id:INT,专业 ID。
7.grade:VARCHAR(20),年级。
8.description:VARCHAR(1000),课程简介。
9.created_at:TIMESTAMP,创建时间。
10.updated_at:TIMESTAMP,更新时间。
course_comments 表
1.comment_id:INT,评论 ID。
2.user_id:INT,用户 ID。
3.course_id:INT,课程 ID。
4.content:TEXT,评论内容。
5.parent_id:INT,父评论 ID。
6.likes:INT,点赞数。
7.is_visible:BOOLEAN,是否显示。
8.status:ENUM,评论状态。
9.created_at:TIMESTAMP,创建时间。
course_ratings 表
1.rating_id:INT,评分 ID。
2.user_id:INT,用户 ID。
3.course_id:INT,课程 ID。
4.recommendation:DECIMAL(2,1),综合推荐度。
5.difficulty:INT,课程难度。
6.workload:INT,作业压力。
7.usefulness:INT,知识实用性。
8.is_visible:BOOLEAN,是否显示。
9.created_at:TIMESTAMP,创建时间。
resources 表
1.resource_id:INT,资源 ID。
2.title:VARCHAR(255),资源标题。
3.description:VARCHAR(500),资源简介。
4.file_path:VARCHAR(255),文件路径。
5.file_type:ENUM,文件类型。
6.file_size:INT,文件大小。
7.uploader_id:INT,上传者 ID。
8.course_id:INT,课程 ID。
9.download_count:INT,下载次数。
10.average_rating:DECIMAL(2,1),平均评分。
11.rating_count:INT,评分人数。
12.status:ENUM,状态。
13.created_at:TIMESTAMP,创建时间。
tags 表
1.tag_id:INT,标签 ID。
2.tag_name:VARCHAR(50),标签名称。
favorites 表
1.favorite_id:INT,收藏 ID。
2.user_id:INT,用户 ID。
3.target_id:INT,对象 ID。
4.target_type:ENUM,对象类型。
5.created_at:TIMESTAMP,收藏时间。
reputation_records 表
1.record_id:INT,记录 ID。
2.user_id:INT,用户 ID。
3.change_score:INT,分数变化。
4.reason:TEXT,变化原因。
5.related_id:INT,关联对象 ID。
6.related_type:ENUM,关联对象类型。
7.created_at:TIMESTAMP,记录时间。
items 表
1.item_id:INT,物品 ID。
2.name:VARCHAR(100),物品名称。
3.type:ENUM,物品类型。
4.price:INT,所需积分。
5.description:VARCHAR(500),物品描述。
6.image_url:VARCHAR(255),预览图 URL。
user_items 表
1.user_item_id:INT,记录 ID。
2.user_id:INT,用户 ID。
3.item_id:INT,物品 ID。
4.is_used:BOOLEAN,是否启用。
5.obtained_at:TIMESTAMP,获取时间。
1.3.1 用户与权限系统
(1) 用户基础 (users 表):
存储用户名、加密密码、学院/专业 ID、信誉分等核心信息,通过 role_id 关联角色体系。
(2)RBAC 权限控制 :
roles(角色) + permissions(权限) + role_permissions(关联表)三级结构
支持动态分配权限,实现管理员、教师、学生等角色的精细化控制。
1.3.2 学院-专业-课程体系
(1)层级结构 :
colleges(学院)→ majors(专业)→ courses(课程)
专业绑定学院(college_id),课程绑定专业(major_id)和教师(teacher_id)。
(2)课程扩展属性 :
学分(credit)、年级(grade)、简介(description),支持时间戳跟踪(created_at/updated_at)。
1.3.3 课程评价模块
(1)双维度评价 :
评分 (course_ratings):量化指标(难度、作业量、实用性等)
评论 (course_comments):支持树形结构(parent_id 回复嵌套)、点赞(likes)和状态管理(status)。
(2)防刷机制 :
用户-课程唯一约束(uk_user_course),确保单用户仅评一次。
1.3.4 资源管理
(1)资源核心 (resources 表):
记录文件路径、类型、大小、下载量、评分(average_rating)及审核状态(status)。
(2)标签系统 :
tags(标签库) + resource_tags(资源标签关联),支持灵活分类检索。
1.3.5 用户行为与激励
(1)收藏系统 (favorites):
通用设计(target_type 支持课程/资源/教师),唯一约束防重复收藏。
(2)信誉体系 (reputation_records):
动态记录分数变化(change_score),关联内容类型(related_type)激励优质贡献。
(3)积分商城 (items+ user_items):
虚拟物品(头像框、背景等)兑换与穿戴(is_used),提升用户黏性。
1.3.6 设计亮点
(1) 软删除设计 :
deleted_at 字段(如 course_comments)替代物理删除,保留数据追溯能力。
(2) 高频查询优化 :
索引覆盖:评论状态(idx_resource_status)、收藏类型(idx_favorite_type)
冗余字段:资源表预存平均分(average_rating)避免实时计算。
(3) 数据一致性 :
外键级联删除(如 ON DELETE CASCADE 确保课程删除时关联评论同步清理)。


2.2.1 设计原则
•数据保护优先:聚焦说明书中 “用户密码、课程评价” 等敏感数据,优先设计加密与备份措施;
•最小权限:严格按说明书 “普通用户 - 管理员 - 超级管理员” 的角色划分,用户仅能访问自身所需功能;
•多层防御:结合说明书 “自动审核 + 人工审核”“密码加密 + HTTPS”,形成多环节安全防护。
2.2.2 权限设计(基于说明书 RBAC 要求)
(1)角色定义

(2)角色 - 权限对照表

(3)权限校验流程(资源上传,贴合需求) 1.用户发起 “资源上传” 请求; 2.系统先校验用户角色(未登录 → 跳转登录页,仅 “普通用户 / 管理员 / 超级管理员” 可操作); 3.再校验用户信誉分(需 ≥60 分,否则提示 “信誉分不足”); 4.校验通过 → 允许上传,文件上传后进入 “自动审核队列”。 5.系统安全设计检验
2.2.3 系统安全设计
(1)数据安全
•存储加密:用户密码采用 bcrypt 算法加盐存储(每个用户盐值随机),禁止明文;
•传输加密:所有 API 接口使用 HTTPS 协议,防止 “评分、密码” 传输泄露;
•数据备份:核心数据库(users、courses、course_ratings)每日自动备份,保留 30 天历史版本(说明书 3.5.1)。
(2)访问安全
•登录保护:连续 5 次密码错误 → 锁定 15 分钟;首次登录 / 连续 2 次错误 → 触发图像验证码;
•接口限流:同一 IP 每分钟最多 100 次请求,超限制 → 封禁 30 分钟;
•会话管理:登录态 2 小时有效,30 分钟无操作自动登出。
(3)内容安全
•RSA 加密保护用户敏感信息的传输,确保只有拥有私钥的接收方能够解密数据,防止中间人攻击。
•对存储在 AWS S3 的对象启用 AES-256 加密,并使用 KMS 管理加密密钥,确保数据传输和存储的安全。
(4)防攻击措施
•XSS 防护:输入过滤特殊字符
•CSRF 防护:表单提交(如改密码、传资源)需携带 CSRF Token;
•SQL 注入防护:数据库操作使用参数化查询,禁止 SQL 拼接。
•信誉分与安全联动
•信誉分规则:初始 100 分;合规加分(首次传资源 + 10 分、下载 + 1 分)、违规扣分(恶意评分 - 15 分、敏感词 - 5 分);
•安全限制:<60 分 → 限制 “上传 / 评分 / 评论”(按钮置灰);<20 分 → 自动封禁,需申诉解封。
2.3.1 需求一致性:(如 bcrypt 加密、100 次 / 分钟限流),无额外新增;
2.3.2 可落地性:采用说明书提及的成熟技术(bcrypt、HTTPS),管理员操作(如审核队列)贴合 “后台界面” 设计,降低操作成本;
2.3.3 场景匹配:针对 “学生评论敏感词”“资源侵权” 等选课场景风险点,设计对应防护(内容审核、举报功能),贴合系统定位。
3.1.1 问题一:部分功能描述模糊,实现方式不清晰。
回答: 我们将这些高级功能进行了优先级后置。届时核心架构已稳固,扩展新功能更从容。而些许更复杂的功能,则在项目后期基于前期积累的用户数据再进行研发,这样实现路径更清晰、更科学。
3.1.2 问题二:对目标用户群体的具体需求和痛点挖掘不够深入。
回答: 我们改进了需求分析方法。在“能用”阶段,我们通过制作可交互的前端原型,在同学中进行小范围演示与访谈,快速验证核心流程同学的真实痛点。这种“设计-验证-反馈”的循环将贯穿项目始终,确保我们构建的功能是用户真正需要的。
3.2.1 改进部分:精准聚焦,采用分层演进的产品路线图
3.2.2 改进过程:
(1) 重新评估与裁剪: 我们召集全体成员,对照评审意见,对所有功能点进行逐一评估。使用“重要性-实现难度”矩阵进行分析。
(2) 明确阶段目标: 经过激烈讨论,我们一致决定,必须牺牲部分“美好”的功能,确保核心体验。所有不影响使用的主要功能全部后置。
(3) 制定三阶段路线图: 据此,我们绘制了清晰的路线:能用: 只做最核心的评价流程。 好用: 在核心流程稳固后,增加扩展功能,并优化性能。 爱用: 最后引入其他高级功能。
(4) 改进结果: 项目目标变得极其清晰,团队对每个阶段要交付什么成果有了统一且明确的认知,极大地增强了项目可控性。
10.17(周五)分配任务为三个模块
10.18-10.19(周日)完成三个主要任务
10.20(周一)总结整理,博客撰写,答辩准备
| 学号 | 工作内容 | 贡献度 |
|---|---|---|
| 102300219 林腾岳 | 接口设计下 认证、用户、收藏、以及部分管理员接口,系统设计说明书的引言与系统架构设计 | 14% |
| 102300409 严晨峰 | 数据库设计的二到四部分,以及表结构设计和数据库初始化脚本 | 13% |
| 052301346 郑积超 | 数据库设计说明书引言,索引设计,视图设计,存储过程,触发器设计,第六和第七部分 | 13% |
| 102300325 陶斯予 | 博客以及 PPT 制作 | 10% |
| 102300233 朱奕韬 | 接口设计分工 | 14% |
| 102300226 徐江山 | 功能模块层次设计、系统安全和权限设计 | 13% |
| 102300218 林柏林 | 系统设计说明书编写 | 13% |
| 102300033 林嘉乐 | 博客以及 PPT 制作 | 10% |





| 学号 | 工作内容 |
|---|---|
| 102300219 林腾岳 | 技术选型、拆解任务、把控进度、解决复杂问题 |
| 102300409 严晨峰 | 基于后端技术栈开发接口与数据库逻辑,保障功能稳定 |
| 052301346 郑积超 | 基于后端技术栈开发接口与数据库逻辑,保障功能稳定 |
| 102300325 陶斯予 | 设计产品原型,统筹项目进度与各角色协作 |
| 102300233 朱奕韬 | 技术选型、拆解任务、把控进度、解决复杂问题 |
| 102300226 徐江山 | 基于前端技术栈实现页面开发,保障界面交互流畅 |
| 102300218 林柏林 | 基于前端技术栈实现页面开发,保障界面交互流畅 |
| 102300033 林嘉乐 | 环境配置、测试用例、执行测试,汇报展示的 PPT |