2012-08-04 70 views
5

我想知道,
在許多網站有選擇喜歡/不喜歡的職位。
甚至在這裏,當然,在stackoverflow。數據庫設計:喜歡的桌子?

所以,從技術上講,這是一個很大的喜歡錶?

user_id post_id 

USER_ID - 誰投
POST_ID - 這帖子是它

是怎麼回事?
大喜歡錶嗎?
是不是有更高效/複雜的東西?

+0

你認爲這是一張大桌子的基礎是什麼? – 2012-08-04 12:32:01

+0

如果您需要保留關於誰喜歡/不喜歡帖子的信息,那是您需要存儲的最小數據量。 – JJJ 2012-08-04 12:33:02

回答

5

在最基本的層面上,是的,就是這樣。

但隨後開始擴張,試圖回答這樣的問題:

  • 多少錢的用戶喜歡這個崗位?
  • 他們什麼時候喜歡這篇文章?
  • 他們是怎麼找到帖子的?
  • 他們對帖子發表了評論嗎?
  • 如何整組/社區類的職位

然後你開始想回答更多關於在朋友和社會各界深入的問題。

1

我想我能理解你的關心。每次需要呈現頁面時都必須發出COUNT()。

您當然必須擁有這個基本的表,這將成爲COUNT()的基礎,但您並不需要爲每次訪問都COUNT()。

創建一個總計表,並在頁面收到喜歡或不喜歡的情況下使用觸發器或者調用存儲過程來不時更新時更新它。

我會說每種方法都更多地針對不同的網站個性,即更多的閱讀或更多的作品,但你已經知道,當談到喜歡或不喜歡什麼是不可見的。

+0

所以幾乎, 假設我有一個可以喜歡的郵政表。 它應該有一個字段「likes_counter」來計算喜歡的數量,所以我不必使用COUNT()。對? – socksocket 2012-08-04 15:21:50

+0

正確。使用目標表,向其添加列是一種在服務器中保存額外表的方法。如果你被允許改變目標表的結構,那很好。如果沒有,則創建一個包含兩列的單獨表格:targetTableName,totalLikes。 我想你可以完全訪問數據庫。我的注意力集中在關注不同的設計方案。 – 2012-08-04 16:31:18