在关系型数据库,比如mysql里面。
我想要存放目录和文件的关系,
比如:
A目录下有:AA目录,AB目录
AA目录下有AAA,AAB,AAC目录,
AAA目录下有file1.txt, file2.txt, file3.txt等
它们呈现的是一个树的结构。
然后查询的时候,
1)需求:比如查询A目录,可以获取到整棵树(直接深层到最底层的文件级别)
2)需求:查询file1,查询到自下而上的整个链路信息,比如:file1 - AAA - AA - A
请问一下各位大佬使用mysql是否可以实现这样的功能呢?
数据库表设计
创建表来存储目录和文件的关系
示例数据插入
插入一些示例数据来表示你的目录和文件结构:
MySql8.0及以上写法
查询整棵树
使用递归查询来获取某个目录下的所有子目录和文件:
执行查询后,结果是:
查询文件的完整路径
递归查询也可以用来获取某个文件的完整路径:
执行查询后,结果是:
MySql8.0以下写法
创建存储过程来查询整棵树
使用存储过程来递归查询目录和文件结构:
查询整棵树
调用存储过程来查询某个目录下的所有子目录和文件:
执行存储过程后,结果如下:
创建存储过程来查询文件路径
使用存储过程来递归查询文件的完整路径:
查询文件路径
调用存储过程来查询某个文件的完整路径:
执行存储过程后,结果如下:
性能优化
为了优化查询性能,可以在
parent_id
列上创建索引: