1. 程式人生 > >網站點贊 評論 回覆 資料庫設計

網站點贊 評論 回覆 資料庫設計

本文主要分享了我在設計評論模組中的一些心得,希望對讀者有些許幫助。

關於這種常用功能,查了許多資料 又基於公司的業務場景 

1.由使用者發表作品  其他已註冊使用者 在瀏覽個使用者發表的作品時可以進行 點贊 評論 (同時可以撤銷點贊)

2.同時對評論的內容也可以進行相應的點贊 (同時可以撤銷點贊)

3.以及後期規劃 對評論的使用者可以進行相應的回覆

基於以上三點 我查了一些網上資料

最終決定 設計以下 三張表

使用者表就不多說了 id account nickname password 等等

評論表(comment)設計如下:

  • 表字段    欄位說明
  • id    主鍵
  • compose_id    作品id
  • compose_type    作品型別
  • content    評論內容
  • from_userid    評論使用者id

回覆表(reply)設計:

  • 表字段    欄位說明
  • id    主鍵
  • comment_id    評論id
  • reply_id    回覆目標id
  • reply_type    回覆型別
  • content    回覆內容
  • from_userid    回覆使用者id
  • to_userid    目標使用者id

點贊表(zan)設計如下:

  • 表字段    欄位說明
  • id    主鍵
  • type_id    對應的作品或評論的id
  • type    點贊型別  1作品點贊  2 評論點贊 3....
  • user_id    使用者id
  • status    點贊狀態  0--取消贊   1--有效贊

對於 評論表來說  它是掛載於 作品之下的  。  1個作品有多個評論。

而回復表,由於業務場景是 不管對評論表進行回覆還是對於回覆進行回覆  它都是屬於 評論表下的子集 不會出現子子孫孫這種樹形結構。 所以在回覆表設定一個父親

comment_id,  有reply_type 來區分  該條回覆是針對評論進行回覆 還是針對回覆進行回覆

對於 點贊表  ---考慮到  點贊可以對作品進行點贊 也可以對評論進行點贊  設計type 來區分 該點贊型別( type )是針對 作品還是評論 以及後期有可能的需求 回覆點贊等等

由於公司沒用到redis 直接操作資料庫mysql, 一般來說 對於作品或文章來時 點贊與取消贊  是一件很頻繁操作的事件  ,這樣資料量一大感覺  頻繁的更新會很耗伺服器效能。目前  想法是 用個redis做快取,頻繁點讚的更新操作 放到redis中 一個放(使用者最終的點贊狀態) 一個放待更新待插入到資料庫的點贊狀態,通過一個定時任務去 跑 待更新待插入的資料同步到資料中

對於評論 想法是 先取拉取資料到快取中  用快取輸出到頁面。