2011-03-16 46 views
1

我是數據庫設計的初學者,我想創建一個評論系統,能夠回覆用戶評論並顯示用戶所做的所有評論。此外,還會有許多頁面,每個頁面都有一個註釋部分。關於構建評論系統的建議

到目前爲止,我已經提出了兩種潛在的數據庫設計來構建評論系統。第一個將爲每個頁面的評論提供一張表格,併爲每個用戶的評論提供一張表格。頁面評論表將具有用於表格鏈接目的的user_id和page_id字段。

第二個潛在的設計結構是有一個大的分區表,其中只有comment_id和user_id字段用於錶鏈接。我還沒有想過如何處理回覆功能,在處理這個問題之前,我想獲得一些關於設計方法(如果有的話)會有效執行的輸入。

回答

2

我會去兩個表:一個用於評論線程和另一個用於評論。註釋線程將是這個樣子:

id 
/* Other bookkeeping things like created time and such */ 

和評論:

id 
thread_id 
user_id 
comment 
parent_id 
/* Other bookkeeping stuff */ 

然後通過添加comment_thread_id列頁表的線程附加到該頁面。

擁有單獨的獨特評論線程爲您提供了一個方便的地方,可以在將來附加訪問控制或類似的擴展,它還允許您將評論線索附加到事物上。將評論線程附加到頁面上而不是其他方式可以輕鬆地將註釋線程添加到系統中的其他對象。

1
comments 
    id 
    user_id 
    comment_text 
    page_id 
    parent_id 

使用它來存儲頁面評論。 parent_id是其他評論的回覆。對於頁面上的評論,parent_id將爲零(不包括父註釋),但對於回覆,parent_id將不爲零,並且將是該回復所屬評論的ID。

例如,你會有這樣的

id user_id comment_text page_id parent_id 
1 6   sdh   1  0   <-- comment on the page 
2 9   gfdf   2  0   <-- another comment on other page 
3 4   reply xzy 1  1   <-- reply to comment id 1 by user id 4 on page 1 

數據您可以考慮timestampflaggeddeleted等領域,可以幫助你在排序,排序,過濾,監控和軟刪除評論。您可以按頁面,按用戶,按家長進行分組。

+0

太難查詢了,這個接近 – tyan 2016-07-21 07:45:17