如何在数据库中有效地存储和检索树结构数据?

时间:2017-07-28 08:33:05

标签: sql database

我想为浏览器编写笔记记录应用程序。用户有一个帐户,可以创建文件夹,子文件夹,子文件夹等,以及在该文件夹结构中的任何位置的注释。

我很难想象一种有效的方式来存储和检索这些信息(虽然在服务器上并且理想地在用户的浏览器中缓存),并且谷歌搜索信息让我有点困惑。这是一个非常复杂的问题,因为那里有一些信息暗示,或者我错过了什么?

做一个简单的SELECT * WHERE user_id = ?是不可能的,将它发送给用户,并让客户端代码从完整的笔记和文件夹列表构建树?

1 个答案:

答案 0 :(得分:0)

你的想法是可能的,但效率不高。想象一下,你有一个拥有10.000个音符和子文件夹的用户。如果您使用查询,则每次用户登录时,即使他只想编辑一个笔记,也会下载所有这些信息。

我认为最好的方法是给每个文件夹并记下一个唯一的ID和一个parent_id字段。如果用户创建子文件夹,则此子文件夹将获取其自己的ID,而parent_id将是父文件夹的唯一ID。 如果备注/文件夹位于顶层(没有父级),您可以指定一个特殊的parent_id来识别它们。

这样做有一些好处: 您只能在用户需要时加载数据。如果您的用户没有打开文件夹,则无需下载该文件夹中的所有笔记。 只要他打开文件夹,您只需拨打d.append(int(int(H[i]) - int(33)))并检索该文件夹中的所有子文件夹和备注。

相关问题