基於SpringBoot從零構建博客網站 - 確定需求和表結構
要確定一個系統的需求,首先需要明確該系統的用戶有哪些,然後針對每一類用戶,確定其需求。對於博客網站來說,用戶有3大類,分別是:
- 作者,也即是註冊用戶
- 遊客,也即非註冊用戶
- 管理員,網站維護人員
那麽從這3大類用戶的角度分析,來確定博客網站的需求。
1、作者需求
作者是博客網站中最重要的用戶,是博客網站內容的直接貢獻者,那麽從作者的角度來說,需求有:
註冊、登錄、退出
這是作者進入與離開網站必不可少的功能,同時管理員可以設置是否需要激活賬號的功能,如果開啟了賬號激活功能,那麽作者註冊成功後,會收到一封激活賬號的郵件。
個人中心
註冊成本網站的用戶後,就會有個人首頁,這裏就會涉及到個人相關信息的維護,例如:頭像設置、個人簡介、修改密碼。
關註其她作者
關註其她作者,成為其粉絲,同時方便下次找到該作者
私信其她作者
增加本網站作者間的互動,例如:請教其她作者問題時,就可以發私信的方式進行交流
收藏文章
碰到其她作者寫的好的文章,可以將其收藏起來,方便下次查看
文章維護
文章維護是作者最主要的功能,作者發表文章、修改文章、刪除文章和查看文章
專欄維護
對於寫同一系列的文章,可以創建專欄,將這一系列的文章都歸檔於該專欄,這樣方便作者管理,也方便讀者查閱
評論文章
作者與讀者間溝通交流的方式
2、遊客需求
對於遊客來說,需求相關簡單,就是檢索和閱讀文章:
檢索文章
檢索文章可以從4個渠道檢索,即:關鍵字全文檢索、文章分類檢索、文章所屬專欄檢索、文章標簽檢索
閱讀文章
這是遊客最主要的功能,查看文章的內容
3、管理員需求
管理員的主要工作就是維護本網站,讓網站正常運行,為此從管理員的角度來看,需求有:
報表信息
對於管理員來說,他需要了解本網站的各項指標統計信息,例如:今日註冊用戶數、今日活躍用戶數、文章發表量等。可以將這些報表信息做在儀表盤裏面。
用戶管理
查看用戶信息,當然可以禁用不合法用戶、創建管理員用戶
文章管理
查看文章信息,同時對於不合法的文章可以將其關閉,即不能在前臺顯示
專欄管理
查看專欄信息
系統設置
對於系統設置主要有設置註冊用戶是否需要激活、設置文章是否需要審核
根據前面《確定需求》,可知這個博客網站主要由三大模塊構成,分別是:
- 用戶管理及權限相關模塊
- 文章及專欄等博文相關模塊
- 公共模塊
那麽從這三大模塊的角度來分析,確定表結構。
4、用戶管理及權限相關模塊
這個模塊最主要是有一張用戶表,用於存儲用戶相關的信息,具體的表結構內容如下:
用戶表:auth_user
字段名 | 類型 | 說明 |
---|---|---|
userId | varchar(64) | 主鍵 |
code | varchar(64) | 用戶代碼,用於設置用戶個人主頁url上的一個唯一代碼 |
loginName | varchar(200) | 用戶名 |
varchar(200) | 電子郵箱 | |
password | varchar(200) | 密碼 |
realName | varchar(200) | 真實姓名 |
cellphone | varchar(32) | 手機號碼 |
idCard | varchar(32) | 身份證號 |
idCardImgPath | varchar(200) | 身份證照片路徑 |
realStatus | int(11) | 實名認證狀態,0:未實名認證,1:已實名認證,-1:實名認證失敗 |
sex | int(11) | 性別,0:表示女,1:表示男,-1:表示保密 |
picture | varchar(200) | 頭像圖片路徑 |
introduce | varchar(2000) | 個人簡介 |
isActive | int(11) | 是否激活,0:未激活,1:已激活 |
status | int(11) | 賬號狀態,0:禁用,1:啟用 |
follows | int(11) | 關註用戶數量 |
fans | int(11) | 粉絲數量 |
createTime | datetime | 創建時間,也即註冊時間 |
createIp | varchar(32) | 創建時的ip地址 |
updateTime | datetime | 更新時間 |
lastLoginTime | datetime | 最近一次登錄的時間 |
lastLoginIp | varchar(32) | 最近一次登錄的ip |
對於感興趣的用戶可以加關註,則有用戶粉絲關註信息表,即:
用戶粉絲關註信息表:auth_user_fans
字段名 | 類型 | 說明 |
---|---|---|
followWho | varchar(64) | 被關註用戶id |
whoFollow | varchar(64) | 關註人的id |
createTime | datetime | 創建時間 |
對於權限管理這一塊,其實主要後臺的管理人員會涉及到。這一塊采用簡單的用戶綁定角色,角色綁定權限的方式來設計。
角色表:auth_role
字段名 | 類型 | 說明 |
---|---|---|
roleId | varchar(64) | 主鍵 |
name | varchar(200) | 角色名 |
note | varchar(2000) | 描述 |
用戶角色關系表:auth_user_role
字段名 | 類型 | 說明 |
---|---|---|
userId | varchar(64) | 用戶表主鍵 |
roleId | varchar(64) | 角色表主鍵 |
權限表:auth_action
字段名 | 類型 | 說明 |
---|---|---|
actionId | varchar(64) | 主鍵 |
name | varchar(200) | 權限名 |
note | varchar(2000) | 描述 |
角色權限關系表:auth_role_action
字段名 | 類型 | 說明 |
---|---|---|
roleId | varchar(64) | 角色表主鍵 |
actionId | varchar(64) | 權限表主鍵 |
5、文章及專欄等博文相關模塊
這個模塊是博客網站的核心模塊,主要涉及文章和專欄相關表的設計。
一個博客網站裏面文章和專欄都會歸類,比如是屬於架構設計、還是屬於前端開發的內容,所以需要一張分類信息表,即:
分類信息表:blog_category
字段名 | 類型 | 說明 |
---|---|---|
categoryId | varchar(64) | 主鍵 |
name | varchar(200) | 分類名稱 |
introduce | varchar(2000) | 說明 |
parentId | varchar(64) | 父節點id |
orderId | int(11) | 排序號 |
在寫文章時,可以為文章寫相應標簽,有利於文章的檢索,那麽就得有一張標簽表,即;