烤鹽人——團隊作業四系統設計和數據庫設計


這個作業屬於哪個課程 <福州大學2021春軟件工程實踐S班>
這個作業要求在哪里 <團隊作業四——系統設計和數據庫設計>
團隊名稱 烤鹽人
這個作業的目標 軟件系統設計、數據庫設計、補充上次答辯問題
其他參考文獻 《軟件工程》、...

團隊開發計划時間安排

階段 工作內容 里程碑
階段1(4.24-4.30) 初步編碼實現登錄注冊模塊、個人模塊 搭建前端靜態頁面框架、后端完善基礎功能接口
階段2(5.1-5.7) 實現瀏覽文章模塊、社區模塊 能夠完成文章展示流程,社區基礎切換、瀏覽社區文章
階段3(5.8-5.14) 實現后台基礎管理模塊,與后端對接調試 能夠進行文章管理以及用戶管理等基礎后台功能
階段4(5.15-5.21) 實現帖子具體操作模塊、資訊模塊 能夠進行文章的點贊、收藏、發布以及文章附件相關操作,資訊的頁面展示
階段5(5.22-5.28) 個人、社區模塊完善 能夠進行個人頁面、社區界面完整流程
階段6(6.1-6.8) 實現樹洞模塊,后台其他管理功能補充 實現樹洞模塊,后台的用戶管理、通知管理
階段7(6.9-6.15) UI美化調整,代碼測試,修復漏洞 調試修復項目,基礎功能完善可用
階段8(6.16-6.22) 驗收調試,總結經驗 基本完成期望功能,實現文章的一些高級操作、個人收藏夾、樹洞板塊以及后台系統的充分管理

團隊項目預期開發分工安排

昵稱 角色 分工內容
Starlite 產品/前端 協調團隊、協助前端、參與部分測試
hannahShaw 產品/前端 前台首頁頁面
retrospection 前端 前端框架搭建、后台管理界面
Gaoann 前端 登錄/注冊頁面、文章展示
谷雨yu 前端 文章展示、協助后台界面
星夜的風 后端 后端框架搭建、權限管理、安全性控制、接口設計
鄭開心 后端 文章部分增刪改查(多種查詢)
羊一 后端 文章標簽、收藏、舉報部分增刪改查
t0p1Crayon 后端 管理員、公告、評論部分增刪改查

系統設計

體系結構設計

image-20210423172616190

​ 本系統分為前后端分離的開發方式,前端框架為vue,頁面狀態采用vuex進行管理,使用router進行頁面跳轉,axios進行前后端通信,采用ElementUI作為UI庫美化前端界面;后端框架為Spring Boot,后端數據庫服務器為MySQL,數據庫框架為mybatis-plus+druid連接池,權限管理框架使用sa-Token,前后端交互協議為https,接口文檔使用swagger2+knife4j,日志框架為logback,緩存管理框架為redis。

功能模塊圖

image-20210423120518355

  • 用戶包含兩種:游客和已注冊用戶

    image-20210423151914855
  • 游客主要由登錄組成、瀏覽信息組成,瀏覽信息又由瀏覽首頁、瀏覽資訊、瀏覽社區幾個模塊組成

    image-20210423161102269

  • 已注冊用戶功能模塊則比游客多,由登錄注冊、瀏覽信息、操作帖子、樹洞、個人設置幾個功能模塊組成

    image-20210423164843737

  • 其中已注冊用戶的瀏覽信息模塊由瀏覽首頁、瀏覽資訊、瀏覽社區、瀏覽通知組成

    image-20210423164946234

  • 操作帖子模塊則由發布帖子、收藏帖子、點贊帖子、查看帖子、回復帖子、搜索帖子幾個主要功能模塊組成

    image-20210423164952277

  • 樹洞模塊則由發布樹洞模塊組成,而只有發布樹洞才可以接收回復樹洞,所以發布樹洞又包含了接收和回復樹洞模塊組成

    image-20210423164958195

  • 個人設置則包含了修改個人信息、查看收藏、查看個人發布三個功能模塊

    image-20210423165003066

  • 用戶文章管理模塊由搜索文章、查看文章詳情、封禁文章、刪除文章等主要功能模塊組成

    image-20210423165012232

  • 操作用戶主要由搜索用戶、查看用戶詳情、刪除用戶這些主要功能模塊組成

    image-20210423165016000

  • 操作通知主要由搜索通知、刪除通知、發布通知、查看通知詳情這些主要功能模塊組成

    image-20210423165025967

  • 官方文章管理模塊主要有查看官方文章、搜索官方文章、發布官方文章、刪除官方文章這些功能模塊組成

    image-20210423165036417

ER分析

部分ER圖

  • 用戶-博客

    思路: 在表的設計中用戶和博客間的的關系有兩種:

    一是用戶可以發表博客,兩者通過博客中的用戶id外鍵關聯,一個用戶可以發表多篇博客,二者是一對多的關系;

    二是用戶可以收藏博客,有一個收藏表,用戶id和博客id都作為外鍵,一個用戶可以收藏多篇博客,每篇博客可以被多個用戶收藏,所以二者是多對多的關系。

    img

  • 博客-評論

    思路: 博客和一級評論表的關系是擁有關系,即博客擁有評論,二者通過一級評論表的博客id作為外鍵關聯,一篇博客可以有多個評論,因此兩者之間是一對多的關系

    img

  • 博客-模塊

    思路: 博客和模塊的關系是擁有關系,即博客屬於模塊,模塊擁有博客,兩者通過博客中的模塊id外鍵關聯,一個模塊可以擁有多篇博客,因此二者是一對多的關系。

    img

  • 博客-附件

    思路: 博客和附件的關系是擁有,即能在博客中上傳附件,兩者通過附件表中博客id作為外鍵關聯,一篇博客可以有多個附件,因此兩者是多對多關系。

    img

  • 博客-標簽

    思路: 博客和標簽的關系是擁有關系,即博客擁有標簽,有一個博客標簽表,博客id和標簽id都作為外鍵,一個博客可以擁有多個標簽,一種標簽可以被多個博客擁有,所以二者是多對多的關系。

    img

整體ER圖

ER圖

表結構設計

  • 用戶表 account
    • 索引:主鍵索引
字段名 數據類型 數據長度 主鍵 非空 注解
name char 32 用戶名
nickname char 32 用戶昵稱
password char 64 登陸密碼
status char 4 標識用戶身份
email char 64 用戶綁定的郵箱
avatar char 64 用戶頭像
slogan char 256 個性簽名
  • 用戶興趣度表 account_interest

    • 主鍵:id
    • 外鍵:account_name、blog_id
字段名 數據類型 數據長度 主鍵 非空 注解
id int 10 ID
account_name char 32 用戶名
blog_id int 10 博客ID
interest float 0 興趣度
  • 附件表 attachment
字段名 數據類型 數據長度 主鍵 非空 注解
id int 10 ID
name char 64 附件名
  • 博客表 blog

    • 外鍵:module_id、author(account.name)
    • 索引:module_id、author
字段名 數據類型 數據長度 主鍵 非空 注解
id int 10 唯一標識博客的字段
module_id int 10 博客所屬模塊id
author char 32 作者名字
title varchar 256 博客標題
content text 0 博客內容
release_time datetime 0 發布時間
like_number int 10 點贊數
collection_number int 10 收藏數
state tinyint 4 博客狀態
  • 博客_附件關聯表 blog_attachment

    • 外鍵:blog_id、attachment_id
    • 索引:blog_id、attachment_id
字段名 數據類型 數據長度 主鍵 非空 注解
id int 10
blog_id int 10 博客ID
attachment_id int 10 附件ID
  • 博客_模塊關聯表 blog_module
字段名 數據類型 數據長度 主鍵 非空 注解
id int 10 模塊ID
name char 32 模塊名稱
  • 博客_標簽關聯表 blog_tag

    • 外鍵:tag_id、blog_id
    • 索引:tag_id、blog_id
字段名 數據類型 數據長度 主鍵 非空 注解
id int 10 ID
tag_id int 10 標簽ID
blog_id int 10 博客ID
  • 收藏表 collection

    • 外鍵:account_name、blog_id
    • 索引:account_name、blog_id
字段名 數據類型 數據長度 主鍵 非空 注解
id int 10 收藏ID
account_name int 10 用戶名
blog_id int 10 博客ID
  • 一級評論表 first_comment
    • 外鍵:author、blog_id
    • 索引:author、blog_id
字段名 數據類型 數據長度 主鍵 非空 注解
id int 10 評論ID
blog_id int 10 博客ID
author char 32 發布者姓名
content text 0 評論內容
release_time datetime 0 發表時間
  • 二級評論表 secondary_comment
    • 外鍵:comment_id、author、account_name
    • 索引:comment_id、author、account_name
字段名 數據類型 數據長度 主鍵 非空 注解
id int 10 評論ID
comment_id int 10 被評論評論ID
author char 32 發布者姓名
account_name char 32 被評論用戶
content text 0 評論內容
release_time datetime 0 發表時間
  • 公告表 notice
    • 外鍵:account_name、author
    • 索引account_name、author
字段名 數據類型 數據長度 主鍵 非空 注解
id int 10 公告ID
author char 32 作者
title varchar 256 公告標題
content text 0 公告內容
release_time datetime 0 發表時間
account_name char 32 接收用戶
  • 權限表 permission
字段名 數據類型 數據長度 主鍵 非空 注解
id int 10 權限ID
name char 32 權限名稱
  • 角色表 role
字段名 數據類型 數據長度 主鍵 非空 注解
id int 10 角色ID
name char 32 角色名稱
  • 角色_權限關聯表 role__permission
    • 外鍵:role_id、permission_id
    • 索引:role_id、permission_id
字段名 數據類型 數據長度 主鍵 非空 注解
id int 10 ID
role_id int 10 角色ID
permission_id int 10 權限ID
  • 標簽表 tag
字段名 數據類型 數據長度 主鍵 非空 注解
id int 10 標簽ID
name char 32 標簽名稱
  • 舉報表 tip_off
    • 外鍵:blog_id
    • 索引:blog_id
字段名 數據類型 數據長度 主鍵 非空 注解
id int 10 ID
blog_id int 10 被舉報博客ID
count int 10 舉報數量

數據庫設計

類圖

image-20210501124305320

思路

  1. 曬研論壇作為一個考研信息論壇,最主要的就是承載信息的文章類以及用戶類。文章類擁有基礎的標題、內容、作者、時間等,這些都作為文章的數據屬性而存在;用戶則有賬號、密碼、郵箱等基礎數據屬性。
  2. 其次考研論壇也應該擁有多個子板塊,所以添加設計了板塊類以及文章分類可用的標簽類。
  3. 相應的文章擁有許多操作:點贊、收藏、評論、舉報,這些記錄也都一一構成類,其中評論還能分為一級二級評論。同時文章有攜帶附件的需求,就產生了附件類。
  4. 我們曬研論壇的用戶也有划分:普通用戶、管理員,他們之間的權限,角色也應該成為類。

系統安全和權限設計

系統安全

前后端數據傳輸

前后端接口我們使用https協議,該協議會在傳輸層對傳輸的數據進行加密,可以防止一些抓包工具獲取明文數據。主要優點有:內容采用混合加密技術,中間者無法直接查看明文內容;通過證書驗證客戶端訪問的是自己的服務端;數據進行簽名加密,可以防止數據被冒充或篡改。

傳輸數據進行過濾

為了防止XSS攻擊、SQL注入攻擊,后端會先對傳輸的數據進行過濾,然后再處理過濾后的數據。

數據庫加密儲存

為了防止數據庫泄露或其它情況造成的用戶私密信息(如登錄密碼等信息)泄露,所有存儲在數據庫中的私密數據都是加密后再存儲的。用戶登錄密碼會進行 md5(加鹽)加密后存儲在數據庫中。

前端使用驗證碼

前端發送驗證碼的按鈕設置兩次的間隔時間為60s,防止被惡意刷按鈕造成后端大量請求阻塞。

密碼安全等級

用戶注冊的時候對密碼的安全等級進行要求,必須達到一定的安全等級才能注冊成功。

密碼防爆破

用戶連續輸錯密碼三次后需要等待5分鍾才能再次輸入,用戶連續輸錯密碼5次后將發送郵件給用戶示警。

接口防爆破

后端使用攔截器攔截用戶的每次請求,如果某個用戶在短時間內頻繁大量訪問同一個接口,該請求將會被攔截。

token驗證身份

為了防止CSRF攻擊,我們將會使用jwt機制,每一次后端請求將會檢查經過簽名后的token數據,如果非法將禁止訪問。

唯一登錄

每個用戶在同一時間段僅能維護一個登錄的客戶端,用戶最新一次的登錄將會把用戶上次的登錄踢下線。

權限設計

游客、封禁用戶

僅支持博客、評論、各個板塊的查詢功能

普通用戶

博客、評論、板塊的增加、刪除、修改、查詢

收藏、舉報博客

接收公告

樹洞功能

管理員

用戶、博客的封禁

用戶統計數據

博客統計數據

回答問題

  1. 考研論壇需要能夠分享文件,以滿足同學在搜索具體考研信息時的需求。

    ​ 對於這一需求我們認真分析了一下,決定采用文章可攜帶文章附件的形式,這樣既能保持文章的可讀性,同樣也能擁有附帶文件的便利性,這一文件功能主要就是同類部分關鍵資源的交流分享。

    ​ 同樣在類圖和er圖中我們也添加了文章附件的描述。

    image-20210423205953304

    image-20210423210001245

  2. 用況圖中用況之間的關系描述不足。

    我們這次重新繪制了用況圖

    img img

團隊分工

工作流程

現在團隊內進行任務划分

每個人工作完成后上傳到團隊文檔倉庫共享進度

最后由文檔整理的同學整合排版

過程中采用github project進行項目管理

組員分工

學號 昵稱 分工內容
221801314 Starlite 博客整理、數據流圖、工作計划制定、答辯
221801226 hannahShaw 體系結構設計+功能模塊、前端工作計划制定
221801235 retrospection 接口設計文檔、評審表制作
221801203 Gaoann 系統設計文檔
221801127 谷雨yu 體系結構設計+功能模塊、UML圖修改、數據流圖
221801334 星夜的風 數據庫設計、系統安全性和權限設計、接口設計文檔、后端工作計划制定
221801319 鄭開心 數據字典整理、ER圖+表結構設計、數據庫文檔輔助
221801325 羊一 數據庫設計文檔、ppt制作
221801310 t0p1Crayon ER圖+表結構設計、數據庫文檔輔助

貢獻度比例

學號 昵稱 貢獻度
221801314 Starlite 16.7
221801226 hannahShaw 8.3
221801235 retrospection 10.4
221801203 Gaoann 6.25
221801127 谷雨yu 14.6
221801334 星夜的風 14.6
221801319 鄭開心 10.4
221801325 羊一 12.5
221801310 t0p1Crayon 6.25

鏈接

團隊倉庫鏈接

團隊作業4倉庫

文檔github鏈接

系統設計說明書

數據庫設計說明書

系統設計數據庫設計答辯ppt

在線文檔鏈接

系統設計說明書--在線預覽

數據庫設計說明書--在線預覽

系統設計數據庫設計答辯ppt--在線預覽


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM