我想拥有每个人都有文件夹的文件夹和文件。文件夹可以有无限的子文件夹。你认为最好的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父ASC可以使树正确)?
答案 0 :(得分:2)
邻接列表很适合插入和移动子树,但是如果你需要查询深度超过一个级别,那么a **的痛苦就是因为如果你进入n级深度,你最终会得到n连接。示例:显示文件夹X的所有后代/祖先。
我建议将邻接列表(parent_id)与以下模型之一结合使用:
我非常喜欢嵌套的设置 - 但它有一个缺点 - 插入很慢。但通常你会比插入新节点有更多的读取(浏览)结构。
另一件事:
我通常将文件夹和文档放在同一个表中,并使用布尔is_folder
列标记它们。我喜欢将文件夹/文件视为树中的“节点”,因此它们基本相同。更多元数据将存储在另一个表中。