求助~點贊功能的設計

來源:互聯網
上載者:User
一個普通的點贊功能,就是統計累加的次數,資料庫欄位很簡單,一個unsigned int即可,問題是如何記錄點贊的人。

不知道用字串記錄點贊的人的id可不可以?比如"1, 5, 169, 4214"表示四個不同的id的使用者點了贊。

  1. 問題是判斷某個是否已經點贊,該怎麼判? 比如id=1的使用者有沒有點贊,用字串比較還是用in_array()

  2. 如果似乎字串比較,複雜度是O(n)吧?in_array()的複雜度是O(n)還是O(log n)?

  3. 資料庫設計時,該欄位用varchar還是text

回複內容:

一個普通的點贊功能,就是統計累加的次數,資料庫欄位很簡單,一個unsigned int即可,問題是如何記錄點贊的人。

不知道用字串記錄點贊的人的id可不可以?比如"1, 5, 169, 4214"表示四個不同的id的使用者點了贊。

  1. 問題是判斷某個是否已經點贊,該怎麼判? 比如id=1的使用者有沒有點贊,用字串比較還是用in_array()

  2. 如果似乎字串比較,複雜度是O(n)吧?in_array()的複雜度是O(n)還是O(log n)?

  3. 資料庫設計時,該欄位用varchar還是text

一個點贊表
article_id,user_id

這樣,每次統計文章的次數即可,article_id,user_id聯合做主鍵也可以做到唯一性。

個人感覺不好,比較的邏輯過於複雜。

這種東西應該是 nosql 的強項,但非要用 mysql 做的話,我想到一種辦法:

建一個表儲存哪些人點贊了哪些文章,用兩個欄位,使用者id 和文章id

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.