假设我有用户 u1,u1,u3...
和书签 b1,b2,b3....
如何最有效地存储书签。
每个用户都有自己的一组加载到其页面上的书签。然后,如果用户想知道还有谁拥有相同的书签,他可以选择该书签并查看也拥有该书签的用户列表。
这只是一个关于总体设计的问题。如果到目前为止我的理解是正确的,那么这是一种多对多的关系。
最佳答案
常见的方法是使用第三个表(多对多关系),您还可以在此表中存储时间戳来确定用户添加书签的时间或用户对其书签的特定评论。
此方法的另一个优点是书签表不存储任何用户特定数据或具有重复条目(相同书签的 4 次导致 4 个用户添加了它)
+-------------------+
| bookmarks_users |
|-------------------|
| id (int, primary) |
| user_id (int) |
| bookmark_id (int) |
+-------------------+
选择一个用户的所有书签(只是一个基本查询 - 您也许应该加入所需的数据;))
SELECT bookmark_id
FROM bookmarks_users
WHERE user_id = 123
选择具有特定书签的所有用户
SELECT user_id
FROM bookmarks_users
WHERE bookmark_id = 123
显示具有至少一个公共(public)书签作为指定用户的用户(此查询非常糟糕(性能方面),但它可以作为一个很好的示例)
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
希望这有帮助 - 蒂姆
关于mysql - 如何在 mySQL 表中存储多个用户的书签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6147135/