复制Facebook的“喜欢”功能

时间:2011-12-03 01:14:34

标签: php mysql arrays

在我的数据库中有2个表:“书籍”和“用户”。我正在显示页面上的所有书籍,并希望用户可以选择点击“我已阅读此内容”的小链接,类似于Facebook的状态功能。用户可以点击他们已阅读书籍或取消点击以“读取”该书。登录的其他用户也可以看到谁阅读了什么。我正在质疑我的做法,并希望获得有关此类事情的其他方向的反馈。

我想到的是在“users”表中有一个字段,可能是“books_read”,我会在其中存储一组值(book_id)。在显示所有书籍的前端,我会查询“books_read”字段,如果一个值与当前book_id匹配,那么在该书的下方就会出现“用户X已阅读此内容”。

简而言之,我会在“users”表中存储一个“book_id”数组,以收集每个用户阅读的书籍。我会拉出这个数组并将ID与每个查询的书进行比较,如果有匹配,则输出用户已阅读该书。

我是否遗漏了某些东西或者可能没有找到更清洁的方法?

2 个答案:

答案 0 :(得分:1)

在像MySQL这样的RDBMS中,将列表存储在字段中很少是个好主意,尤其是当您知道稍后将在列表中查找特定部分时。通过这样做,数据库无法利用索引。

相反,您应该创建一个链接用户和书籍的附加表格。 (可选)您可以将其命名为* users_books *并将读取移动到其自己的列中。

users_booksread
-----------
user_id
book_id

答案 1 :(得分:1)

创建一个单独的表,可能称为book_read

其中,对于用户喜欢的每本书,都会存储user_idbook_id

然后你没有凌乱的数组来处理,一切都规范化,你的设计会更清洁,你的数据库更灵活。此外,您的用户表不会有一堆额外的问题,它会以不幸的方式影响性能。