数据库课程设计 论坛系统—— 系统详细设计说明书

马马虎虎记录下2021Fall 的数据库课程设计——论坛系统
基于django开发,源码上传到github啦:) B612Forum
不能的戳这里:) csdn资源下载

文章目录

  • 1. 文档介绍
    • 1.1. 编写目的
    • 1.2. 文档范围
    • 1.3. 读者对象
  • 2. 数据库概念结构设计
    • 2.1 系统 ER 图
    • 2.2 系统用例图
    • 2.3 业务泳道图
    • 2.4 数据流图
    • 2.5 模式类图
  • 3. 服务功能和界面设计
    • 3.1 整体设计方法概述
    • 3.2 后端服务功能设计
    • 3.3.前端界面设计
      • 3.3.1 主界面设计
      • 3.3.2 注册界面
      • 3.3.3 登录界面
      • 3.3.4 详细界面
      • 3.3.4 发帖界面
      • 3.3.5 内容管理界面
      • 3.3.6 消息提示界面
      • 3.3.7 好友申请界面
      • 3.3.8 个人资料界面
      • 3.3.9 编辑资料界面
      • 3.3.10 修改密码界面
      • 3.3.11 后台管理界面
  • 4. 系统安全体系设计
  • 5. 系统运行环境设计与部署结构
    • 5.1 环境设计
    • 5.2 项目部署
  • 6. 源代码列表及说明

1. 文档介绍

1.1. 编写目的

  1. 对系统进行整体的设计,方便后续的开发过程
  2. 作为数据库设计,软件架构的总依据

1.2. 文档范围

包括数据库设计,软件设计等有关内容

1.3. 读者对象

编写系统设计规格说明的人员及程序开发人员,以及《数据库系统原理》课程老师和同学。

2. 数据库概念结构设计

2.1 系统 ER 图

数据库课程设计 论坛系统—— 系统详细设计说明书_第1张图片

2.2 系统用例图

数据库课程设计 论坛系统—— 系统详细设计说明书_第2张图片

2.3 业务泳道图

场景 1: 用户登录,注册,修改个人信息,注销
数据库课程设计 论坛系统—— 系统详细设计说明书_第3张图片
场景 2:发布帖子,发表评论,添加好友,发送私信
数据库课程设计 论坛系统—— 系统详细设计说明书_第4张图片

2.4 数据流图

数据库课程设计 论坛系统—— 系统详细设计说明书_第5张图片
A: 帖子内容信息
B. 评论内容信息
C. 好友申请信息
D. 好友私信信息
数据库课程设计 论坛系统—— 系统详细设计说明书_第6张图片数据库课程设计 论坛系统—— 系统详细设计说明书_第7张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第8张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第9张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第10张图片
在这里插入图片描述

2.5 模式类图

数据库课程设计 论坛系统—— 系统详细设计说明书_第11张图片
上述的模式,每一个关系表的的每一列数据都和主键直接相关,而不能间接相关,属性不能依赖于其他非主
属性,均满足 3NF 设计,设计合理。

3. 服务功能和界面设计

3.1 整体设计方法概述

⚫ 设计模式: MVC
本论坛系统是基于 MVC 的设计模式的。
MVC 即 Model-View-Controller(模型-视图-控制器) 模式。
◼ Model (模型) 简而言之即数据模型。模型不是数据本身(比如数据库里的数据),而是抽象的描
述数据的构成和逻辑关系。通常模型包括了数据表的各个字段(比如人的年龄和出生日期)和相
互关系(单对单,单对多关系等)。数据库里的表会根据模型的定义来生成创建。
◼ View (视图) 主要用于显示数据,用来展示用户可以看到的内容或提供用户可以输入或操作的界
面。
◼ Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制
用户输入,并向模型发送数据(比如增加或更新数据表)。
Django 网站开发的四大模块,Django Model(模型)对应的是 MVC 模式中的模型;Django URL + View(视图)
对应 MVC 模式中的 Controller;Django Template(模板): 这个与经典 MVC 模式下的 View 一致。Django 模板
用来呈现 Django view 传来的数据,也决定了用户界面的外观。Template 里面也包含了表单,可以用来搜
集用户的输入
⚫ 开发框架:ORM
该论坛系统在开发的过程中采用的是 ORM 框架,即 Object-Relational Mapping(对象关系映射),它
的作用是在关系型数据库和业务实体对象之间作一个映射,关系表现为 Django 中的一个数据模型(Model)
映射一个数据库表。其基本情况是:类(django.db.models.Model)映射到数据库表,类的属性映射为数据
库表字段,类的实例对象则映射为数据行。
不同程序员写 SQL 语句的水平参差不齐,写出的 SQL 语句执行效率不一致,导致系统运行速度快慢不一,运行状态时好时坏。Django ORM 通过统一格式的业务逻辑代码操作数据库,把 SQL 语句统一转换成
较为固定的 Django 语法结构。Django ORM 能避免一些重复、简单的劳动,在 ORM 模式下开发人员不用写
SQL 语句,更不需要在 SQL 语句优化上下功夫,可以只专注于业务逻辑的处理,从而提高开发效率。
设计流程主要包括如下 5 步

  1. 在项目使用的数据库管理系统中建立数据库。
  2. 在项目的配置文件 settings.py 中设置数据库的连接字符。
  3. 在应用程序的 models.py 文件中编写继承于 models.Model 的数据模型。
  4. 运行 python manage.pymakemigrations、python manage.py migrate 两个命令生成数据库表。
  5. 使用 Django ORM 操作数据库表。

⚫ AJAX 编程方法
AJAX(Asynchronous Java Script And XML)的意思是异步的 Java Script 和 XML,也就是使用 Java Script
语言与服务器进行异步交互,传输的数据为 XML,实际上现在传输的数据大多是 JSON 格式的。AJAX 最大
的优点是在不重新加载整个页面的情况下,可以与后端服务器交换数据并更新部分网页内容。在本论坛系
统中采用 AJAX 编程实现嵌套评论,并在网页上实时显示
⚫ Bootstrap 前端框架
本论坛系统采用的是 bootstrap 的前端框架,使得 web 开发更迅速、简单。通过使用 bootstrap 提供的 css
设置,组件,javascript 插件来美化网页。

3.2 后端服务功能设计

数据库课程设计 论坛系统—— 系统详细设计说明书_第12张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第13张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第14张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第15张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第16张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第17张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第18张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第19张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第20张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第21张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第22张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第23张图片

3.3.前端界面设计

3.3.1 主界面设计

数据库课程设计 论坛系统—— 系统详细设计说明书_第24张图片

3.3.2 注册界面

数据库课程设计 论坛系统—— 系统详细设计说明书_第25张图片

3.3.3 登录界面

数据库课程设计 论坛系统—— 系统详细设计说明书_第26张图片

3.3.4 详细界面

数据库课程设计 论坛系统—— 系统详细设计说明书_第27张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第28张图片

3.3.4 发帖界面

数据库课程设计 论坛系统—— 系统详细设计说明书_第29张图片

3.3.5 内容管理界面

数据库课程设计 论坛系统—— 系统详细设计说明书_第30张图片

3.3.6 消息提示界面

数据库课程设计 论坛系统—— 系统详细设计说明书_第31张图片

3.3.7 好友申请界面

在这里插入图片描述

3.3.8 个人资料界面

数据库课程设计 论坛系统—— 系统详细设计说明书_第32张图片

3.3.9 编辑资料界面

数据库课程设计 论坛系统—— 系统详细设计说明书_第33张图片

3.3.10 修改密码界面

数据库课程设计 论坛系统—— 系统详细设计说明书_第34张图片

3.3.11 后台管理界面

数据库课程设计 论坛系统—— 系统详细设计说明书_第35张图片

4. 系统安全体系设计

为了保证系统平稳运行,设计了系统的安全体系,一个目的在于处理系统故障,介质故障,以及计算机病
毒。另一个目的在于限制数据库用户的权限,避免用户无意或恶意造成数据的泄露或损坏。
⚫ 对于系统故障和介质故障,应当开启数据库的日志功能,定期对数据库全库备份;对于计算机病毒,
应当为系统安装杀毒软件,并且运维时进了避免使用操作系统的管理员账户登陆系统,减小病毒可能
造成的危害。
➢ 手动数据库备份:直接在宝塔面板中的数据库管理界面点击进行备份,或者手动复制云服务器项
目目录下的 db.sqlite3 文件。
数据库课程设计 论坛系统—— 系统详细设计说明书_第36张图片
➢ 手动站点备份:直接对整个站点进行备份
数据库课程设计 论坛系统—— 系统详细设计说明书_第37张图片
➢ 添加任务计划,自动备份
数据库课程设计 论坛系统—— 系统详细设计说明书_第38张图片
➢ 开启日志:响应日志和错误日志

数据库课程设计 论坛系统—— 系统详细设计说明书_第39张图片
➢ 网站的恢复
可以根据自动备份的冗余数据库和日志文件对网站进行恢复或者在服务器上设置磁盘镜像同步
网站的内容。
⚫ 数据库针对应用场景,创建了不同的角色
➢ 游客: 游客可以浏览该网站的所有内容,可以注册称为该网站的用户,但是不能进行发帖或者
发表评论
➢ 注册用户:注册用户不仅可以浏览该网站的所有内容,还可以发帖,发表评论,添加好友,发送
私信。
➢ 管理员:管理员拥有上述的所有功能,除此之外还可以添加版块,修改板块,删除板块,删除文
章或者评论。
⚫ 并发控制和流量控制
在宝塔面板对该站点添加并发限制,单 IP 限制,流量限制

数据库课程设计 论坛系统—— 系统详细设计说明书_第40张图片

5. 系统运行环境设计与部署结构

5.1 环境设计

数据库课程设计 论坛系统—— 系统详细设计说明书_第41张图片

5.2 项目部署

一、 下载 python3 到/usr/local 目录
1.1. 切换到 /usr/local 目录
1.2. 获取 python3.6 的压缩文件 wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
1.3 解压 python3.6 tar -zxvf Python-3.6.6.tgz
1.4 编译安装 python3 到指定路径
1.4.1 执行命令 ./configure --prefix=/usr/local/python3
1.4.2 安装 python3 make make install
1.4.3 安装完成之后,建立软链接,添加变量,方便在终端中直接使用 python3
a)python3 的软连接
执行命令: ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
b)pip3 的软连接
执行命令:ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
二、 安装软件管理包和可能使用的依赖
2.1. 执行命令:yum -y groupinstall "Development tools"
2.2. 执行命令: yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
三、 安装 virtualenv
3.1.执行命令: pip3 install virtualenv
3.2.建立软连接 执行命令:ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
3.3.在根目录下建立文件夹,用于存放env mkdir -p /data/env
四、 切换到/data/env/下,创建指定版本的虚拟环境
4.1.执行命令 : cd /data/env 切换目录
4.2.执行命令: virtualenv --python=/usr/bin/python3 pyweb
4.3.进入/data/env/pyweb/bin,启动虚拟环境
A.执行命令: cd /data/env/pyweb/bin
B.执行命令: ``source activate
五、虚拟环境中配置网站所需依赖
5.1 在你网站根目录执行下列命令导出配置信息: pip freeze > requirements.txt
5.2 安装 uwsgi 执行命令: pip3 install uwsgi
5.3 给 uwsgi 建立软链接 执行命令: ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
5.4 将网站源码上传
5.4.1 修改 setting.py 文件
ALLOWED_HOSTS = ['*'] # 设置为所有的主机都可以访问 STATIC_ROOT = os.path.join(BASE_DIR,"static") # 设置静态文件的路径
5.4.2 在主目录下生成 static 和 media 文件
python manage.py collectstatic
5.4.2 通过宝塔面板上传到云服务器上 /www/wwwroot 目录下
数据库课程设计 论坛系统—— 系统详细设计说明书_第42张图片
5.4.3 下载 pyhton 项目管理器,添加项目,并映射到 ECS 的公网 IP 地址
在这里插入图片描述
5.4.4 修改项目配置文件
数据库课程设计 论坛系统—— 系统详细设计说明书_第43张图片
5.5.5 在站点管理中找到映射的站点,并修改其配置文件
数据库课程设计 论坛系统—— 系统详细设计说明书_第44张图片
六、 开启站点,运行该项目文件
1.首先进入到项目文件夹下,然后激活虚拟环境
2.执行 uwsgi 命令,指定端口号,静态文件的配置路径,以及进程数和线程数。
在这里插入图片描述

3.然后在任意主机上的浏览器中键入”公网 IP:端口号” 就可以浏览该网页
数据库课程设计 论坛系统—— 系统详细设计说明书_第45张图片
数据库课程设计 论坛系统—— 系统详细设计说明书_第46张图片

6. 源代码列表及说明

数据库课程设计 论坛系统—— 系统详细设计说明书_第47张图片

你可能感兴趣的:(#,数据库,#,Django,数据库)