Rumah > pembangunan bahagian belakang > tutorial php > 求助~点赞功能的设计

求助~点赞功能的设计

WBOY
Lepaskan: 2016-06-06 20:22:30
asal
1426 orang telah melayarinya

一个普通的点赞功能,就是统计累加的次数,数据库字段很简单,一个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

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan