你说的都队——概要设计和数据库设计

你说的都队 2025-10-20 23:35:14
项目内容
这个作业属于哪个课程202501 福大-软件工程实践-w 班
这个作业要求在哪里概要设计和数据库设计
这个作业的目标系统和数据库设计;类图、系统安全和权限设计;改进分析

数据库设计说明书.pdf 1.28M

智汇选课-系统设计说明书.pdf 2.80M

系统设计和数据库设计.pptx 18.72M

目录

  • 1. 系统和数据库设计
  • 1.1 体系结构设计+功能模块层次图
  • 1.2 ER 分析+表结构设计
  • 1.3 设计思路
  • 2.类图、系统安全和权限设计
  • 2.1 设计类图
  • 2.2 系统安全和权限设计
  • 2.3 设计思路
  • 3.改进分析
  • 3.1 回答问题;
  • 3.2 改进部分和改进过程
  • 4.团队绩效
  • 4.1 工作流程
  • 4.2 团队分工和贡献度
  • 4.3 团队合作情况
  • 5.开发计划
  • 5.1 时间计划
  • 5.2 分工安排

1. 系统和数据库设计

1.1 体系结构设计+功能模块层次图

1.1.1 体系结构设计

img

1.1.2 功能模块层次图

img

1.2 ER 分析+表结构设计

1.2.1 ER 图

img

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.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 设计类图

img

img

2.2 系统安全和权限设计

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

2.2.2 权限设计(基于说明书 RBAC 要求)
(1)角色定义

img

(2)角色 - 权限对照表

img

(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 设计思路

2.3.1 需求一致性:(如 bcrypt 加密、100 次 / 分钟限流),无额外新增;

2.3.2 可落地性:采用说明书提及的成熟技术(bcrypt、HTTPS),管理员操作(如审核队列)贴合 “后台界面” 设计,降低操作成本;

2.3.3 场景匹配:针对 “学生评论敏感词”“资源侵权” 等选课场景风险点,设计对应防护(内容审核、举报功能),贴合系统定位。

3.改进分析

3.1 回答问题;

3.1.1 问题一:部分功能描述模糊,实现方式不清晰。​​
回答:​​ 我们将这些高级功能进行了优先级后置。届时核心架构已稳固,扩展新功能更从容。而些许更复杂的功能,则在项目后期基于前期积累的用户数据再进行研发,这样实现路径更清晰、更科学。
3.1.2 问题二:对目标用户群体的具体需求和痛点挖掘不够深入。​​
​ 回答:​​ 我们改进了需求分析方法。在“能用”阶段,我们通过制作可交互的前端原型,在同学中进行小范围演示与访谈,快速验证核心流程同学的真实痛点。这种“设计-验证-反馈”的循环将贯穿项目始终,确保我们构建的功能是用户真正需要的。

3.2 改进部分和改进过程

3.2.1 改进部分:精准聚焦,采用分层演进的产品路线图 ​

3.2.2 改进过程:​​
(1)​ 重新评估与裁剪:​​ 我们召集全体成员,对照评审意见,对所有功能点进行逐一评估。使用“重要性-实现难度”矩阵进行分析。
(2)​ 明确阶段目标:​​ 经过激烈讨论,我们一致决定,必须牺牲部分“美好”的功能,确保核心体验。所有不影响使用的主要功能全部后置。
(3)​ 制定三阶段路线图:​​ 据此,我们绘制了清晰的路线:能用:​​ 只做最核心的评价流程。​ 好用:​​ 在核心流程稳固后,增加扩展功能,并优化性能。​ 爱用:​​ 最后引入其他高级功能。
(4)​ 改进结果:​​ 项目目标变得极其清晰,团队对每个阶段要交付什么成果有了统一且明确的认知,极大地增强了项目可控性。

4.团队绩效

4.1 工作流程

10.17(周五)分配任务为三个模块
10.18-10.19(周日)完成三个主要任务
10.20(周一)总结整理,博客撰写,答辩准备

4.2 团队分工和贡献度

学号工作内容贡献度
102300219 林腾岳接口设计下 认证、用户、收藏、以及部分管理员接口,系统设计说明书的引言与系统架构设计14%
102300409 严晨峰数据库设计的二到四部分,以及表结构设计和数据库初始化脚本13%
052301346 郑积超数据库设计说明书引言,索引设计,视图设计,存储过程,触发器设计,第六和第七部分13%
102300325 陶斯予博客以及 PPT 制作10%
102300233 朱奕韬接口设计分工14%
102300226 徐江山功能模块层次设计、系统安全和权限设计13%
102300218 林柏林系统设计说明书编写13%
102300033 林嘉乐博客以及 PPT 制作10%

4.3 团队合作情况

img

img

img

img

5.开发计划

5.1 时间计划

img

5.2 分工安排

学号工作内容
102300219 林腾岳技术选型、拆解任务、把控进度、解决复杂问题
102300409 严晨峰基于后端技术栈开发接口与数据库逻辑,保障功能稳定
052301346 郑积超基于后端技术栈开发接口与数据库逻辑,保障功能稳定
102300325 陶斯予设计产品原型,统筹项目进度与各角色协作
102300233 朱奕韬技术选型、拆解任务、把控进度、解决复杂问题
102300226 徐江山基于前端技术栈实现页面开发,保障界面交互流畅
102300218 林柏林基于前端技术栈实现页面开发,保障界面交互流畅
102300033 林嘉乐环境配置、测试用例、执行测试,汇报展示的 PPT
...全文
54 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110

社区成员

发帖
与我相关
我的任务
社区描述
202501福大-软件工程实践-W班
软件工程团队开发结对编程 高校 福建省·福州市
社区管理员
  • 202501福大-软件工程实践-W班
  • 离离原上羊羊吃大草
  • MiraiZz2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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