留言評論功能的數據庫設計


1、概述

評論功能已經成為APP和網站開發中的必備功能。本文主要介紹評論功能的數據庫設計。

  • 評論功能最主要的是發表評論和回復評論。
  • 評論功能的拓展功能體現有以下幾方面:
  • 單篇文章的評論數量和信息展示;
  • 從時間維度,按照時間倒敘的方式展示動態的用戶評論信息;
  • 不同欄目,不同模塊,不同時間維度的評論排行展示;
  • 點贊數、回復數等維度的排行等。

評論的后台管理:

  • 刪除;
  • 推薦;
  • 精華;
  • 屏蔽,敏感關鍵字的庫的完善、自動屏蔽或者替換功能。

數據表設計

(本文討論兩種模式)

評論為主模式

  • 需求分析
    類似於CSDN這種以評論為主的模式,分為評論和回復。

    把所有回復都放在評論下面,類似於樹狀結構。

  • 數據庫設計
    在以評論為主的樹形顯示情況下,可以將評論分為評論表和回復表。評論掛在主題下面,而回復掛在評論下面

評論表:

表字段 字段說明
id 主鍵
topic_id 主題id
topic_type 主題類型
content 評論內容
from_uid 評論用戶id

回復表:

表字段 字段說明
id 主鍵
comment_id 評論id
reply_id 回復目標id
reply_type 回復類型
content 回復內容
from_uid 回復用戶id
to_uid 目標用戶id

由於我們拆分了評論和回復,那么評論表就不再需要目標用戶字段了,因為評論均是用戶對主題的評論,評論表的設計更佳簡潔了。

reply_type:表示回復的類型,因為回復可以是針對評論的回復(comment),也可以是針對回復的回復(reply), 通過這個字段來區分兩種情景。

reply_id:表示回復目標的id,如果reply_type是comment的話,那么reply_id=commit_id,如果reply_type是reply的話,這表示這條回復的父回復。

一問一答模式

  • 需求分析

簡單的評論設計,但適用於很多app。比如微信朋友圈

這種設計簡單、直接,也滿足了用戶評論、回復的基本要求,對於沒有大量用戶評論的APP需求足夠。

  • 數據庫設計

這種場景下評論一般較少,不區分評論與回復。使用一張表就可以達到效果。

表字段 字段說明
id 主鍵
topic_id 主題id
topic_type 主題類型
content 評論內容
from_uid 評論用戶id
to_uid 評論目標用戶id

topic_type:為了能復用評論模塊,我們引入這個字段來區分主題的類別。

from_uid:表示評論人的id,通過該id我們可以檢索到評論人的相關信息。

to_uid 是評論目標人的id,如果沒有目標人,則該字段為空

出於性能的考慮,往往我們會冗余評人的相關信息到評論表中,比如評論人的nick、頭像,目標用戶也是如此。 這樣一來我們就只用查詢單表就可以達到顯示的效果

有時,目標用戶有多個,那么可以將to_uid字段修改為to_uids,保存時用分隔符來分割用戶id,而目標用戶的信息再去查詢緩存或者數據庫。


免責聲明!

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



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