MySQL : Storing directory structure and query it

标签 mysql tree

我需要能够在 MySQL 中存储文件、目录,但我不知道该怎么做,所以我还可以有一个相当有效的查询来从表中获取数据,例如/swatcat/superscecret.txt

我最初的想法是:

DROP TABLE IF EXISTS objects;
CREATE TABLE objects
(
    ID INT NOT NULL AUTO_INCREMENT, 
    filename VARCHAR(200) NOT NULL,
    objectTypeID INT NOT NULL,
    parentID INT,

    PRIMARY KEY (ID),
    FOREIGN KEY (objectTypeID) REFERENCES objectTypes(ID)
);

对象类型是文件或目录:

CREATE TABLE objectTypes
(
    ID INT NOT NULL AUTO_INCREMENT, 
    name VARCHAR(200) NOT NULL UNIQUE,

    PRIMARY KEY (ID)
);

我的思考过程是parentID将是文件或目录所在的目录...但问题是找到/swatcat/supersecret.txt,如果我决定将swatcat重命名为test101,那么如何创建查询可以应付吗?

最佳答案

方案 A:将目录路径与文件名放在单独的表中的一行中。

计划 B:与计划 A 类似,但路径是新表中“分层”排列的多行。

方案 C:保留“dir/fn”不变,然后使用 LIKERLIKE 定位行,然后使用 SUBSTRING_INDEX (或 MariaDB 中的 REGEXP_REPLACE)进行替换。

关于MySQL : Storing directory structure and query it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48695735/

相关文章:

MYSQL 语句不能产生准确的结果(SUM、IF 语句和 CASE)

php - Laravel Eloquent - 一张 table 的多个模型

mysql - 一行(用户)分配给不同表和数据库中的多行 - mysql

java - 构建 Java 树

python - 使用 pandas 在 Python 中创建和绘制层次树

algorithm - 标记与未标记二叉树?

c++ - 树内容的格式化输出——先序遍历

mysql - EXPLAIN SELECT 在其他数据库中

php - Laravel 5 Eloquent 只得到必要的结果

python - 可视化解析树 - 嵌套列表到 python 中的树