我有一个文件和文件夹系统。在这种情况下,文件夹和文件是数据库中的一些结构化值。我想删除一个文件夹。为此,我需要找出可能位于已删除文件夹内的所有文件和文件夹的 ID。
我的文件夹表:
id folder_id 1 0
我的文件表
id folder_id 1 0
例如,文件夹folder_id 90 可能在folder_id 100 中,而该文件夹又可能在其他几十个中。
如何使用php方法从mySQL表中获取所有以这种方式相关的值?
我有一个文件和文件夹系统。在这种情况下,文件夹和文件是数据库中的一些结构化值。我想删除一个文件夹。为此,我需要找出可能位于已删除文件夹内的所有文件和文件夹的 ID。
我的文件夹表:
id folder_id 1 0
我的文件表
id folder_id 1 0
例如,文件夹folder_id 90 可能在folder_id 100 中,而该文件夹又可能在其他几十个中。
如何使用php方法从mySQL表中获取所有以这种方式相关的值?
有几种方法可以在数据库中存储层次结构:
邻接列表(“邻接列表”)对于每个条目,存储父项的 id。整个分支由递归查询评估。适合小型筑巢。需要大量的数据库查询
Materialized Path(“物化路径”)每个条目存储一个长字符串,其中包含具有一定分隔符的父母的所有id
嵌套集每个条目存储一对 lft 和 rgt 列,它们存储所有嵌套元素的范围。您可以快速获取整个分支,但是插入新条目或在分支之间移动它会产生很多开销。
闭包表一个单独的表存储所有的父子关系。快速得到想要的分支,但是链接记录很多。显示排序树的困难
这些算法在 php 中和直接在 mySQL 存储过程中都有很多实现。
每种方法的优缺点必须与特定项目的要求一起考虑。