Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
您将如何设计一个表来跟踪用户';mysql中的好恶_Mysql_Sql - Fatal编程技术网

您将如何设计一个表来跟踪用户';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次实质性发言。你能证明他们中的任何一个吗?