复制Facebook' "点赞"函数


Duplicating Facebook's "Like" Function

在我的数据库中有2个表:"books"answers"users"。我把所有的书都显示在一个页面上,希望用户可以选择点击一个小链接"我已经读过了",类似于Facebook的状态点赞功能。用户可以点击表示他们已经阅读了这本书,或者取消点击表示"取消阅读"这本书。其他登录的用户也可以看到谁读了什么。我正在质疑我的方法,并希望得到关于其他方向的反馈。

我想到的是在"users"表中有一个字段,也许是"books_read"之类的东西,我将在其中存储一个值数组(book_id's)。在显示所有书籍的前端,我将查询"books_read"字段,如果一个值与当前的book_id匹配,那么在该书籍的下面将出现类似"用户X已阅读此"的内容。

简而言之,我将在"users"表中存储一个"book_id"数组来收集每个用户读过的书。我将拉出这个数组,并将id与查询的每本书进行比较,如果有匹配,则输出用户已经阅读了那本书。

我错过了什么,或者可能没有看到一个更干净的方法?

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

相反,您应该创建一个额外的表来链接用户和阅读的书籍。也可以将其命名为*users_books*,并将read in移动到它自己的列中。

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

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

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

这样你就不用处理杂乱的数组了,一切都是标准化的,你的设计将会更简洁,你的数据库也会更灵活。此外,您的用户表上不会有一堆额外的东西,这些东西会以不幸的方式影响性能。

相关文章: