我想要文件夹和文档,每个文件夹都有一个文件夹。文件夹可以有无限个子文件夹。您认为最好的 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/