你将如何设计一个表来跟踪用户在mysql中的喜欢和不喜欢

时间:2014-07-27 15:40:31

标签: mysql sql

我希望得到您关于设计用于存储用户喜欢和不喜欢的表的观点,以便人们可以检查用户喜欢/不喜欢的历史记录。假设我有成千上万的产品目录。他们每个人都可以被喜欢或不喜欢。我正在考虑创建两个表likesdislikes,每行包含一个用户ID,product

user_like

user_id     product_id     
 Tom          toyA
 May          toyZ
 Peter        toyD
 Tom          toyZ
 Peter        toyV

user_dislike

user_id    product_id
 Tom         toyB
 Tom         toyU
 May         toyV
 Paul        toyA
 Paul        toyN

这是一种合适的方法吗?或者我应该在一个表user_like_dislike中使用concat将新的内容添加到记录的末尾,例如:

user_like_dislike

user_id     like           dislike
  Tom     toyA,toyZ        toyB,toyU
  May     toyZ             toyV
  Paul                     toyA,toyN
  Peter   toyD,toyV

2 个答案:

答案 0 :(得分:4)

我只有一个表user_likes,其列如下:

user_likes (user_id, product_id, like_type)

将like_type设为1表示喜欢,将0表示为不喜欢。

在user_id和product_id上使用主键(用户不应该喜欢和不喜欢同一产品)

答案 1 :(得分:0)

假设你有user_id和product_id列的数字而不是名字,第一种方法会更好。

虽然您的行数遍布屋顶,但速度要快得多。

你可以按照产品历史的用户历史进行搜索,这在第二种方法中非常复杂(因此很慢)

您甚至可以通过添加类似user_like

来合并2个表格user_dislikelike TINYINT(1) UNSIGNED NOT NULL
相关问题