天真的方式是将整个路径作为字符串放入DB中,它适用于玩具DB。但是,这种方法存在一些缺陷。 例如,假设我在/ var / www / sites /下有100K文件,然后在DB中存储/ var / www / sites 100K次效率非常低。我相信有更好的方法可以这样做。
我想仅索引DVD上的文件路径,然后搜索mp3文件或目录等。首选的RDBMS是SQLite(可能是FTS Tables?)。我的目标是学习,我知道有很多桌面搜索引擎。
答案 0 :(得分:4)
答案 1 :(得分:2)
然而,这种方法会产生非标准化的数据库。
那又怎样?第三个NF并不神圣。某些形式的非规范化导致更容易理解的数据模型。只要在转换/解析非标准化值时复制不会导致数据库大小或CPU负载方面出现问题,我就不用担心了。
答案 2 :(得分:1)
此问题有一个名称:存储分层数据,并且已经建立了完善的解决方案
Managing Hierarchical Data in MySQL
One more Nested Intervals vs. Adjacency List comparison
How to store directory / hierarchy / tree structure in the database?
Optimized SQL for tree structures
答案 3 :(得分:0)
我认为一种普遍合理的方法是从存储的路径中删除任何共性。例如,如果您只关心/ media /中的项目,那么显然没有意义存储路径的/ media /部分,因为当您需要重新构建完整路径时,您可以轻松添加它。