0

我正在我的网站上创建一个收藏夹部分,用户可以简单地将某些项目存储在他们的收藏夹部分中以便于访问。每个项目都已经明确定义并具有多个属性。所以我的问题是假设我有 10,000 个用户,并且我想实现一个“收藏夹”系统,那么跟踪每个用户添加的收藏项目的最佳方法是什么?

我正在考虑通过以下方式实现这一点:将每个收藏项 id 链接到用户名,然后运行查询是否具有特定用户名的用户已登录,而不是通过该用户名检索所有收藏项。

我很感激任何帮助找出一个好的方法来做到这一点。我的目标是以一种以后易于检索和使用数据的方式存储,并最大限度地减少冗余信息。

4

2 回答 2

2

这很简单,您需要创建一个包含 3 个字段的新表:

id
favoriteID
userID

每次用户添加新的收藏夹时,它都会在此表中添加一条新记录,存储收藏夹的 ID 和用户的 ID。没有多余的信息,并且很容易通过执行join查询来检索收藏夹或用户的详细信息。这就是关系数据库的用途。

于 2012-06-22T00:46:37.517 回答
1

在 RDBMS 中,您可能会有一个带有用户 ID 和文章 ID 的多对多表。您不需要独立的 id 列:

创建表favourites(user_id int,art​​icle_id int);

这些当然会引用您的用户表和文章表。(或者任何你有代替文章的东西。)

然后,当您想要显示该用户的收藏夹时,您需要检索该用户的所有行。您可能还想在列上创建一个组合唯一索引以防止重复。

您可能会使用 cassandra 之类的东西获得更快的响应,您可以在其中简单地根据 user_id 的键检索并在一个简单的位置获取他们所有的收藏夹。但是,您正在处理多个系统。

我听说,但还没有机会研究,MySQL 现在可以支持类似于 Cassandra 的键值系统,这可能是你最好的选择。

于 2012-06-22T00:51:55.397 回答