我需要能够在 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”不变,然后使用 LIKE
或 RLIKE
定位行,然后使用 SUBSTRING_INDEX
(或 MariaDB 中的 REGEXP_REPLACE
)进行替换。
关于MySQL : Storing directory structure and query it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48695735/