Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
文件权限的嵌套集合或邻接列表模型(MySQL) 问题:_Mysql_Adjacency List_Nested Set Model_Adjacency List Model - Fatal编程技术网

文件权限的嵌套集合或邻接列表模型(MySQL) 问题:

文件权限的嵌套集合或邻接列表模型(MySQL) 问题:,mysql,adjacency-list,nested-set-model,adjacency-list-model,Mysql,Adjacency List,Nested Set Model,Adjacency List Model,在MySQL数据库中存储所有用户文件/文件夹权限时,应该使用什么设计 细节: 我很难判断嵌套集是否需要太多的插入时间,或者邻接列表是否需要太多的层次数据访问时间。我敢肯定,随着文件/文件夹数量的增加,嵌套集需要花费非常长的时间。例如,插入节点(行)需要更新所遍历节点之后的每个节点。是否可以在路径(即/home/user/pictures-->//code>,/home,/home/user)上使用字符串标记,并在查询中使用该标记,这相当于可变长度的邻接列表模型?第三种选择是使用一个父文件夹表,该

在MySQL数据库中存储所有用户文件/文件夹权限时,应该使用什么设计

细节: 我很难判断嵌套集是否需要太多的插入时间,或者邻接列表是否需要太多的层次数据访问时间。我敢肯定,随着文件/文件夹数量的增加,嵌套集需要花费非常长的时间。例如,插入节点(行)需要更新所遍历节点之后的每个节点。是否可以在路径(即
/home/user/pictures
-->
//code>,
/home
/home/user
)上使用字符串标记,并在查询中使用该标记,这相当于可变长度的邻接列表模型?第三种选择是使用一个
父文件夹
表,该表执行完全相同的功能,但使用更多的空间,而不是更多的时间

以下是
文件
文件夹
表的简要说明:

文件:

CREATE TABLE IF NOT EXISTS files
(
   id                    INT NOT NULL AUTO_INCREMENT,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS folders
(
   id                    INT NOT NULL AUTO_INCREMENT,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS files
(
   id                    INT NOT NULL AUTO_INCREMENT,
   parent_folder_id      INT NOT NULL,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   FOREIGN KEY ( parent_folder_id ) REFERENCES folder ( id ),
   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS folders
(
   id                    INT NOT NULL AUTO_INCREMENT,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS parent_folders
(
   id                    INT NOT NULL AUTO_INCREMENT,
   parent_folder_id      INT NOT NULL,
   folder_id             INT NOT NULL,

   FOREIGN KEY ( parent_folder_id ) REFERENCES folders ( id ),
   FOREIGN KEY ( folder_id ) REFERENCES folders ( id ), 
   PRIMARY KEY ( id )
)
engine=innodb;
文件夹:

CREATE TABLE IF NOT EXISTS files
(
   id                    INT NOT NULL AUTO_INCREMENT,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS folders
(
   id                    INT NOT NULL AUTO_INCREMENT,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS files
(
   id                    INT NOT NULL AUTO_INCREMENT,
   parent_folder_id      INT NOT NULL,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   FOREIGN KEY ( parent_folder_id ) REFERENCES folder ( id ),
   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS folders
(
   id                    INT NOT NULL AUTO_INCREMENT,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS parent_folders
(
   id                    INT NOT NULL AUTO_INCREMENT,
   parent_folder_id      INT NOT NULL,
   folder_id             INT NOT NULL,

   FOREIGN KEY ( parent_folder_id ) REFERENCES folders ( id ),
   FOREIGN KEY ( folder_id ) REFERENCES folders ( id ), 
   PRIMARY KEY ( id )
)
engine=innodb;
以下是上述两个表,已修改,并带有一个潜在的
父文件夹
表:

文件:

CREATE TABLE IF NOT EXISTS files
(
   id                    INT NOT NULL AUTO_INCREMENT,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS folders
(
   id                    INT NOT NULL AUTO_INCREMENT,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS files
(
   id                    INT NOT NULL AUTO_INCREMENT,
   parent_folder_id      INT NOT NULL,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   FOREIGN KEY ( parent_folder_id ) REFERENCES folder ( id ),
   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS folders
(
   id                    INT NOT NULL AUTO_INCREMENT,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS parent_folders
(
   id                    INT NOT NULL AUTO_INCREMENT,
   parent_folder_id      INT NOT NULL,
   folder_id             INT NOT NULL,

   FOREIGN KEY ( parent_folder_id ) REFERENCES folders ( id ),
   FOREIGN KEY ( folder_id ) REFERENCES folders ( id ), 
   PRIMARY KEY ( id )
)
engine=innodb;
文件夹:

CREATE TABLE IF NOT EXISTS files
(
   id                    INT NOT NULL AUTO_INCREMENT,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS folders
(
   id                    INT NOT NULL AUTO_INCREMENT,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS files
(
   id                    INT NOT NULL AUTO_INCREMENT,
   parent_folder_id      INT NOT NULL,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   FOREIGN KEY ( parent_folder_id ) REFERENCES folder ( id ),
   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS folders
(
   id                    INT NOT NULL AUTO_INCREMENT,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS parent_folders
(
   id                    INT NOT NULL AUTO_INCREMENT,
   parent_folder_id      INT NOT NULL,
   folder_id             INT NOT NULL,

   FOREIGN KEY ( parent_folder_id ) REFERENCES folders ( id ),
   FOREIGN KEY ( folder_id ) REFERENCES folders ( id ), 
   PRIMARY KEY ( id )
)
engine=innodb;
父文件夹:

CREATE TABLE IF NOT EXISTS files
(
   id                    INT NOT NULL AUTO_INCREMENT,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS folders
(
   id                    INT NOT NULL AUTO_INCREMENT,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS files
(
   id                    INT NOT NULL AUTO_INCREMENT,
   parent_folder_id      INT NOT NULL,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   FOREIGN KEY ( parent_folder_id ) REFERENCES folder ( id ),
   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS folders
(
   id                    INT NOT NULL AUTO_INCREMENT,
   path                  VARCHAR(500) NOT NULL,
   r                     BOOL NOT NULL DEFAULT FALSE,

   PRIMARY KEY ( id )
)
engine=innodb;
CREATE TABLE IF NOT EXISTS parent_folders
(
   id                    INT NOT NULL AUTO_INCREMENT,
   parent_folder_id      INT NOT NULL,
   folder_id             INT NOT NULL,

   FOREIGN KEY ( parent_folder_id ) REFERENCES folders ( id ),
   FOREIGN KEY ( folder_id ) REFERENCES folders ( id ), 
   PRIMARY KEY ( id )
)
engine=innodb;

还有第三种方法:你研究过吗?@eggyal这不仅仅是存储每一对目录/子目录吗?我想了想,但后来认为它需要太多的行。我想我错了