我正在我的网站上创建一个收藏夹部分,用户只需将某些项目存储在收藏夹部分即可轻松访问。每个项目都已明确定义并具有多个属性。所以我的问题是,假设我有10,000个用户,我想实现一个“收藏夹”系统,跟踪每个用户添加了哪些喜欢的项目的最佳方法是什么?
我正在考虑通过以下方式实现此操作:将每个收藏的商品ID链接到用户名,然后运行查询,以确定是否登录了具有特定用户名的用户,而不是通过该用户名检索所有收藏的商品。
我很高兴能找到一个好方法来做到这一点。我的目标是以一种以后易于检索和使用数据并最大限度地减少冗余信息的方式存储。
答案 0 :(得分:2)
这很简单,你需要创建一个包含3个字段的新表:
id
favoriteID
userID
每次用户添加新的收藏夹时,它都会向该表添加一条新记录,同时存储收藏夹的ID和用户的ID。没有冗余信息,通过实现join
查询,可以轻松检索收藏夹或用户的详细信息。这就是关系数据库的用途。
答案 1 :(得分:1)
在RDBMS中,您可能拥有多个具有用户ID和文章ID的表。您不需要独立的id列:
create table favourites
(user_id int,article_id int);
这些当然会引用您的用户表和文章表。 (或者无论你用什么代替文章。)
当想要显示该用户的收藏夹时,您需要检索单个用户的所有行。您可能还希望在列上创建组合的UNIQUE索引以防止重复。
你可以通过像cassandra这样的东西获得更快的响应,你可以根据user_id的密钥进行检索,并在一个简单的位置获取所有收藏夹。但是那时你正在处理多个系统。
我听说过,但是没有机会调查,MySQL现在可以支持类似于Cassandra的Key-Value系统,这可能是你最好的选择。