使用静态主列表的自定义有序子集设计数据库

时间:2019-06-18 19:49:31

标签: database database-design

这可能是一个简单的设计问题,但我不是专业人士,我正在寻找一些反馈意见。

我正在写一些我可以期望有几千个用户,但是想扩展到更大用户群的东西。我的数据库中有一个表,该表包含大约10,000个静态项目,如果可以的话,它是一个主存储库。用户将选择这些项目的较大子集(约8000个),但可以根据需要订购。另一方面,系统一次只需要查询约100个项目。因此,如果用户在其个人列表的项目2000上,则系统将需要确定与2001-2100相对应的项目,并将其从主列表中拉出。

打个比方,您有一个10,000首歌曲的存储库,每个用户创建了8000首歌曲的自定义播放列表,但是一次只能在界面中看到100首歌曲。

主列表中的每个项目中都有大量数据,因此为每个用户复制该数据似乎很浪费。我认为有三个选择,所有选择都需要权衡:

  1. 浪费资源:每个用户都有主列表数据的完整副本,但是这次有一个跟踪订单的索引。这是最简单的方法,但会导致数据库大小迅速爆炸。
  2. 使用一个字段创建数据库对象,该字段存储一个以其自定义顺序标识标签的数组。因此,像[1、15、7、33]这样草率的东西会说要从主列表中取出ID为1、15、7和33的对象,然后按顺序排列它们。这还不错,但似乎并不健壮。
  3. 创建一个中间表,该表的每一行跟踪“用户,索引,数据库ID”。因此,“ $ User,15,33”表示主列表项33在$ User的自定义排序中应排在第15位。这似乎是一个不错的折衷方案,但是会生成一个包含大量行的表。我担心这会使查询变慢。

我认为它可能在2到3之间,但是我对这里的音阶不太满意。任何见识将不胜感激。

0 个答案:

没有答案