Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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_Database Design - Fatal编程技术网

如何在mySQL表中存储多个用户的书签?

如何在mySQL表中存储多个用户的书签?,mysql,database-design,Mysql,Database Design,假设我有用户 u1,u1,u3 和书签 b1、b2、b3 如何最有效地存储书签 每个用户都有自己的一组书签,可以加载到自己的页面上。然后,如果用户想知道还有谁拥有相同的书签,他可以选择该书签并查看同样拥有该书签的用户列表 这只是一个关于总体设计的问题。如果到目前为止我的理解是正确的,这是一种多对多关系。常用的方法是使用第三个表(多对多关系)。您也可以在该表中存储时间戳,以确定用户何时添加书签或用户对其书签的特定注释 这种方法的另一个优点是bookmarks表不存储任何用户特定的数据或具有重复的条

假设我有用户 u1,u1,u3

和书签 b1、b2、b3

如何最有效地存储书签

每个用户都有自己的一组书签,可以加载到自己的页面上。然后,如果用户想知道还有谁拥有相同的书签,他可以选择该书签并查看同样拥有该书签的用户列表


这只是一个关于总体设计的问题。如果到目前为止我的理解是正确的,这是一种多对多关系。

常用的方法是使用第三个表(多对多关系)。您也可以在该表中存储时间戳,以确定用户何时添加书签或用户对其书签的特定注释

这种方法的另一个优点是bookmarks表不存储任何用户特定的数据或具有重复的条目(相同书签的4倍导致4个用户添加了它)

选择一个用户的所有书签(只是一个基本查询-您可能应该加入所需的数据;)

选择具有特定书签的所有用户

SELECT user_id
FROM bookmarks_users
WHERE bookmark_id = 123
显示至少有一个公共书签的用户作为指定用户(此查询非常糟糕(性能方面),但它可以作为一个示例)


希望这有帮助-tim

这样第三个表中的每个书签都有自己的条目。如果说有10个用户在www.google.com上添加书签,就没有办法节省空间。这将是10个独立的条目。
SELECT bookmark_id
FROM bookmarks_users
WHERE user_id = 123
SELECT user_id
FROM bookmarks_users
WHERE bookmark_id = 123
SELECT DISTINCT user_id
FROM bookmarks_users
WHERE bookmark_id IN(
    SELECT bookmark_id
    FROM bookmarks_users
    WHERE user_id = 123
)
AND user_id != 123