您将如何设计一个表来跟踪用户';mysql中的好恶
我想了解您对设计一个表来存储用户喜欢和不喜欢的内容的看法,以便人们可以查看用户的喜欢/不喜欢历史记录。假设我有数千种产品的目录。他们中的每一个人都可以被喜欢或不喜欢。我正在考虑创建两个表您将如何设计一个表来跟踪用户';mysql中的好恶,mysql,sql,Mysql,Sql,我想了解您对设计一个表来存储用户喜欢和不喜欢的内容的看法,以便人们可以查看用户的喜欢/不喜欢历史记录。假设我有数千种产品的目录。他们中的每一个人都可以被喜欢或不喜欢。我正在考虑创建两个表likes和dislikes,每一行都包含一个用户id,product user\u like表格 user_id product_id Tom toyA May toyZ Peter toyD Tom toyZ Pe
likes
和dislikes
,每一行都包含一个用户id,product
user\u like
表格
user_id product_id
Tom toyA
May toyZ
Peter toyD
Tom toyZ
Peter toyV
user_id product_id
Tom toyB
Tom toyU
May toyV
Paul toyA
Paul toyN
用户不喜欢
表格
user_id product_id
Tom toyA
May toyZ
Peter toyD
Tom toyZ
Peter toyV
user_id product_id
Tom toyB
Tom toyU
May toyV
Paul toyA
Paul toyN
这是一个合适的方法吗?或者我应该在一个表中使用concat将新的like追加到记录的末尾,例如:
user\u like\u loke
user_id like dislike
Tom toyA,toyZ toyB,toyU
May toyZ toyV
Paul toyA,toyN
Peter toyD,toyV
我只需要一个表,用户_喜欢,列如下:
user_likes (user_id, product_id, like_type)
让like_类型为1表示like,0表示厌恶
在用户id和产品id上使用主键(用户不应该喜欢和不喜欢同一产品)我只需要一个表,user\u likes,列如下:
user_likes (user_id, product_id, like_type)
让like_类型为1表示like,0表示厌恶
在用户id和产品id上使用主键(用户不应该喜欢或不喜欢同一产品)如果用户id和产品id列使用数字而不是名称,则第一种方法会更好 虽然你的排数超过了上限,但速度要快得多 您可以按用户历史或按产品历史进行搜索,这在第二种方法中相当复杂(因此速度较慢)
您甚至可以通过添加like
like TINYINT(1)UNSIGNED NOT NULL
将两个表user\u like
和user\u loke
组合在一起,如果用户id列和产品id列使用数字而不是名称,则第一种方法会更好
虽然你的排数超过了上限,但速度要快得多
您可以按用户历史或按产品历史进行搜索,这在第二种方法中相当复杂(因此速度较慢)
您甚至可以通过添加like
like TINYINT(1)UNSIGNED NOT NULL
一个PK为(user\u id,product)的表和一个PK为(user\u id,product)的表,以及一个PK为(user\u id,product)的表和一个PK为(user\u id,product)的表,将这两个表组合起来不喜欢/喜欢犯罪没关系,但有些冷酷、冷酷的事实恐怕还是经不起推敲。你在上文中作了2或3次实质性发言。你能证明他们中的任何一个吗?意见是好的,但是一些冷酷的事实呢?恐怕仍然经不起推敲。你在上文中作了2或3次实质性发言。你能证明他们中的任何一个吗?