Mysql 文件夹和文件

标签 mysql tree

我想要文件夹和文档,每个文件夹都有一个文件夹。文件夹可以有无限个子文件夹。您认为最好的 mysql 模式是什么。您认为这很好吗?

Table Folders
  id
  name
  parent (if null the root)
  auth_user (access control type)
  created_date
  created_by

 Table documents
   id
   name
   type
   idFolder (FK id of folders)
   auth_user (access control type)
   created_date
   created_by

你觉得以上是好还是以后会出问题?您认为使用上述方法可以快速轻松地获得文件夹树吗(我认为使用 ORDER BY parent ASC 可以获得正确的树)?

最佳答案

邻接列表非常适合插入和移动子树,但是如果您需要查询比一层更深的地方,那么在 a** 中会很痛苦,因为如果您深入 n 层,您最终会遇到 n 连接。示例:显示文件夹 X 的所有后代/祖先。

我建议将邻接表(parent_id)与以下模型之一结合使用:

我真的很喜欢嵌套集——但它有一个缺点——插入很慢。但通常你会比插入新节点更多地读取(浏览)结构。

另一件事:

我通常将文件夹和文档放在同一个表中,并用 bool is_folder 列标记它们。我喜欢将文件夹/文件视为树中的“节点”,因此它们基本上是相同的。进一步的元数据将存储在另一个表中。

关于Mysql 文件夹和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7960360/

相关文章:

recursion - 如何在没有dolist的情况下在lisp中打印树,只有递归?

php - MySQL:LAST_INSERT_ID() 出现问题

mysql - 查询从多个表中获取数据

mysql - mysql 一个字段多个值

algorithm - 为什么这些树与有序树相同但与二叉树不同

c# - 孤立对象(树节点)的垃圾收集适用于 "release-exe"但不适用于 VS 调试器

java - 我请求有关在 Java 中实现通用树的帮助

ios - 在 iPhone 中创建树状结构

mysql - Eloquent 地按 2 个字段进行搜索

mysql - 将 2 个 SQL 查询合并为一个