如何存储像 Facebook 的“喜欢”这样的数据

Dea*_*lpy 5 mysql database

我有存储在数据库中的对象,它是一些带有属性的文本。该文本有评级。我需要存储此评级,并防止一个用户多次提高此评级。如果我将“文本ID”和“用户ID”存储在其他表中并计算需要“文本ID”的所有记录,则表中的记录太多。

kir*_*gan 4

有两种方法:

  1. 您可以使用多对多关系,即使用名称如“user_likes”的单独表,它将有user_idlike_id列,它们都是主键(这使得用户可能只喜欢 like_object 一次)

  2. 另一种方式 - 高流量网站使用的方式:用户表中的每个用户记录都有列:likes 只是序列化数组或 json,等等。在更新此列之前,您的应用程序会检索此数据并查找特定数据like_object_id(如果不存在) - 您更新数据库。请注意,在这种情况下,所有关心应用程序中数据一致性的内容(例如 like_object_id 存在于某些用户记录中,但不存在于 like_object 表中)都应该在应用程序代码中实现,而不是在数据库中实现。

PS 抱歉我的英语不好,但我尽力解释。

  • 你的英语很好。 (3认同)