基於SpringBoot從零構建博客網站

根據前面 ,可知這個博客網站主要由三大模塊構成,分別是:

  • 用戶管理及權限相關模塊
  • 文章及專欄等博文相關模塊
  • 公共模塊

那麼從這三大模塊的角度來分析,確定表結構。

1、用戶管理及權限相關模塊

這個模塊最主要是有一張用戶表,用於存儲用戶相關的信息,具體的表結構內容如下:

用戶表:auth_user

| 字段名 | 類型 | 說明 |

| ------------- | ------------- | ------------------------------------------------------------ |

| userId | varchar(64) | 主鍵 |

| code | varchar(64) | 用戶代碼,用於設置用戶個人主頁url上的一個唯一代碼 |

| loginName | varchar(200) | 用戶名 |

| email | 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) | 權限表主鍵 |

2、文章及專欄等博文相關模塊

這個模塊是博客網站的核心模塊,主要涉及文章和專欄相關表的設計。

一個博客網站裡面文章和專欄都會歸類,比如是屬於架構設計、還是屬於前端開發的內容,所以需要一張分類信息表,即:

分類信息表:blog_category

| 字段名 | 類型 | 說明 |

| ---------- | ------------- | -------- |

| categoryId | varchar(64) | 主鍵 |

| name | varchar(200) | 分類名稱 |

| introduce | varchar(2000) | 說明 |

| parentId | varchar(64) | 父節點id |

| orderId | int(11) | 排序號 |

在寫文章時,可以為文章寫相應標籤,有利於文章的檢索,那麼就得有一張標籤表,即;

標籤表:blog_tag

| 字段名 | 類型 | 說明 |

| ---------- | ------------ | -------- |

| tagId | varchar(64) | 主鍵 |

| tag | varchar(200) | 標籤 |

| createTime | datetime | 創建時間 |

在寫一系列相關的文章時,可以創建一個專欄,也檢索文章增加專欄這樣一個維度,那麼專欄信息表結構如下:

專欄信息表:blog_group

| 字段名 | 類型 | 說明 |

| ---------- | ------------- | ---------------------------------------------- |

| groupId | varchar(64) | 主鍵 |

| name | varchar(200) | 名稱 |

| logo | varchar(200) | 圖標logo路徑 |

| introduce | varchar(2000) | 介紹 |

| status | int(11) | 審核狀態,0:未審核,1:已審核,-1:審核不通過 |

| categoryId | varchar(64) | 所屬分類id |

| creator | varchar(64) | 創建者,也即用戶表主鍵 |

| createTime | datetime | 創建時間 |

| updateTime | datetime | 更新時間 |

用戶對感興趣的專欄可以進行關注,那麼就有一個專欄的關注信息表,即:

關注專欄信息表:blog_group_fans

| 字段名 | 類型 | 說明 |

| ---------- | ----------- | ---------- |

| groupId | varchar(64) | 主鍵 |

| userId | varchar(64) | 用戶表主鍵 |

| createTime | datetime | 創建時間 |

博客網站最主要的內容就是文章,為此文章信息表極為重要,它的結構如下:

文章信息表:blog_article

| 字段名 | 類型 | 說明 |

| ----------- | ------------- | ------------------------------------------------ |

| articleId | varchar(64) | 主鍵 |

| groupId | varchar(64) | 專欄信息表主鍵 |

| type | int(11) | 文章類型,1:原創,2:翻譯,3:轉載 |

| title | varchar(200) | 標題 |

| description | varchar(2000) | 描述 |

| content | longtext | 內容 |

| status | int(11) | 文章狀態,1:待審核,2:審核通過,-1:審核不通過 |

| canTop | int(11) | 是否置頂,0:不置頂,1置頂 |

| canComment | int(11) | 是否可以評論,0:不可評論,1:可以評論 |

| viewCount | bigint(20) | 瀏覽次數 |

| goodNum | bigint(20) | 點贊次數 |

| badNum | bigint(20) | 踩的次數 |

| checkAdmin | varchar(64) | 審核管理員id |

| createTime | datetime | 創建時間 |

| createIp | varchar(64) | 創建時ip |

| publishTime | datetime | 發佈時間 |

| updateTime | datetime | 更新時間 |

| userId | varchar(64) | 用戶表主鍵 |

可以為文章打上標籤,為此文章與標籤的關係表,即:

文章標籤關係表:blog_article_tag

| 字段名 | 類型 | 說明 |

| ---------- | ----------- | ---------- |

| articleId | varchar(64) | 文章表主鍵 |

| tagId | varchar(64) | 標籤表主鍵 |

| createTime | datetime | 創建時間 |

用戶對於好的文章可以進行收藏,則有一個收藏文章信息表,即:

收藏文章信息表:blog_collect_article

| 字段名 | 類型 | 說明 |

| ---------- | ----------- | ---------- |

| userId | varchar(64) | 用戶表主鍵 |

| articleId | varchar(64) | 文章表主鍵 |

| createTime | datetime | 創建時間 |

3、公共模塊

站點有一些配置信息,對於相關的配置信息也可以是放在配置文件中,這裡將一些配置信息放置於數據庫中,即站點相關配置信息表:

站點相關配置信息表:comm_config

| 字段名 | 類型 | 說明 |

| ----------- | ------------- | ----------- |

| configId | varchar(200) | 配置項key |

| configValue | varchar(1024) | 配置項value |

| description | varchar(2000) | 描述 |

對於記錄文件上傳下載信息,則需要上傳文件信息表:

上傳文件信息表:comm_upload_file

| 字段名 | 類型 | 說明 |

| ------------ | ------------ | ------------ |

| uploadFileId | varchar(64) | 主鍵 |

| path | varchar(200) | 保存文件路徑 |

| orignalName | varchar(200) | 文件原始名稱 |

| fileSize | bigint(20) | 文件大小 |

| fileType | varchar(200) | 文件類型 |

| distType | varchar(200) | 實體類型 |

| userId | varchar(64) | 用戶id |

| createTime | datetime | 創建時間 |

| downloadNum | bigint(20) | 下載次數 |

評論模塊對於網站來說也是必不可少的,所以記錄評論信息的表如下:

評論信息表:comm_comment

| 字段名 | 類型 | 說明 |

| ---------- | ------------ | ---------- |

| commentId | varchar(64) | 主鍵 |

| distId | varchar(64) | 評論目標id |

| distType | varchar(200) | 目標類型 |

| content | text | 評論內容 |

| userId | varchar(64) | 評論人的id |

| goodNum | bigint(20) | 點贊數 |

| createTime | datetime | 創建時間 |

| createIp | varchar(32) | 評論時的ip |

評論回覆信息表:comm_comment_reply

| 字段名 | 類型 | 說明 |

| -------------- | ------------ | ------------ |

| commentReplyId | varchar(64) | 主鍵 |

| replyDistId | varchar(64) | 回覆目標id |

| replyDistType | varchar(200) | 回覆目標類型 |

| content | text | 回覆內容 |

| fromUserId | varchar(64) | 回覆用戶id |

| toUserId | varchar(64) | 被回覆人的id |

| goodNum | bigint(20) | 點贊數 |

| createTime | datetime | 回覆時間 |

| createIp | varchar(32) | 回覆時的ip |

| commentId | varchar(64) | 評論id |

根據前面的需求,是有一個私信的功能,那麼私信相關的表如下:

私信信息表:comm__message

| 字段名 | 類型 | 說明 |

| ----------- | ----------- | -------------------------------------- |

| messageId | varchar(64) | 主鍵 |

| senderId | varchar(64) | 發信者ID |

| receiverId | varchar(64) | 收信者ID |

| content | text | 私信內容 |

| isRead | int(10) | 是否已讀標識,1表示已讀;0表示未讀 |

| senderDel | int(10) | 發信者是否刪除,1表示刪除;0表示未刪除 |

| receiverDel | int(10) | 收信者是否刪除,1表示刪除;0表示未刪除 |

| createTime | datetime | 創建時間 |

記錄業務日誌信息,可以為查找問題提供很好證明,為些日誌信息表為:

日誌信息表:comm_log

| 字段名 | 類型 | 說明 |

| ---------- | ------------- | ------------ |

| logId | varchar(64) | 主鍵 |

| userId | varchar(64) | 用戶表主鍵 |

| ip | varchar(32) | 操作時的ip |

| distType | varchar(200) | 操作目標類型 |

| distId | varchar(64) | 操作目標id |

| content | varchar(2000) | 日誌內容 |

| createTime | datetime | 創建時間 |


分享到:


相關文章: