Php mysql数据库中的层次目录结构

Php mysql数据库中的层次目录结构,php,mysql,sql,database,Php,Mysql,Sql,Database,我正在尝试创建类似dropbox的web应用程序。我希望用户创建目录并将文件上载到服务器。我已经完成了大部分任务,但我一直在问“如何在数据库中高效地存储目录结构?” 项目要求: 1) 它应该能够以给定特定目录路径的方式存储目录,它应该能够找到其中的所有文件和目录。 对于给定路径:root/abc/xyz,我应该能够找到xyz下的所有文件和目录。 2) 不同父目录中的两个目录可以具有相同的名称 我对互联网的研究: 1) 有一种称为路径枚举的方法,其中应用程序将在对应于该目录的列中存储指向该目录的整

我正在尝试创建类似dropbox的web应用程序。我希望用户创建目录并将文件上载到服务器。我已经完成了大部分任务,但我一直在问“如何在数据库中高效地存储目录结构?”

项目要求:
1) 它应该能够以给定特定目录路径的方式存储目录,它应该能够找到其中的所有文件和目录。 对于给定路径:root/abc/xyz,我应该能够找到xyz下的所有文件和目录。
2) 不同父目录中的两个目录可以具有相同的名称

我对互联网的研究:
1) 有一种称为路径枚举的方法,其中应用程序将在对应于该目录的列中存储指向该目录的整个路径 例如:如果我的目录结构为root/abc/xyz 然后,表中对应于xyz目录的行将存储路径root/abc 但是这种方法似乎并不有效
2) 我还得到了关于嵌套集模型的信息。但树的深度和层次节点的总数未知,因此无法使用
3) 还有一种方法,我只在每个目录条目中存储根目录id,而不是整个路径 例如:创建表目录(目录id varchar(32)主键,目录名称varchar(128),创建日期varchar(20),根目录varchar(32),用户id varchar(32)) 但是如何使用root/abc/xyz路径查询数据库,以获取xyz目录下的所有文件和目录。我发现一些多连接操作可以执行此操作。但是,随着目录结构深度的增加,连接查询将严重影响性能


请告诉我一个更好的解决方法。非常感谢您

一个闭包表非常好用,易于更新,易于插入和查询。。谷歌搜索“closure table mysql”或“closure table”应该会提供您需要的信息。嗯?这正是您将使用嵌套集的时间!?!?!嵌套集或修改的前序列表您的意思是什么?这些结构使插入、更新或查询变得更加困难。。闭包表几乎相同,但更易于使用。。我想我没有很好地理解嵌套查询的概念。谢谢你的回答。请任何人给我概述一下谷歌是你的朋友。Hillyer的文章几乎是权威指南。