【发布时间】:2017-02-26 23:04:50
【问题描述】:
不久前,我实现了一个类似 gdrive/dropbox 的应用程序,它具有全局预定义的目录结构(不可修改),每个用户都可以使用,但不限于(意思是:还能够添加和管理自定义文件夹)。
静态目录结构是这篇文章的原因,因为我对当前的处理机制不满意,如果你能给我一个好的建议,我会如何改进它/改变它变得更好.
目前我使用一个 MySQL 数据库,它有一个表“文件夹”,(惊喜,惊喜)包含所有文件夹(预定义和自定义)。因此它有文件夹名称、所有者和父文件夹的字段。
因为预定义的结构非常庞大,我不想将每个用户都添加到表中,所以我只为文件夹表添加了该结构的一个实例,并将“所有者”字段设置为 NULL。因此,要查找用户的所有文件夹,我只需要查询以该特定用户为所有者或不属于任何人的文件夹。
到目前为止,这种方法效果很好,但在文件夹的每个用户属性方面存在一些主要缺点,例如我想显示每个目录中的文档计数 - 包括子目录 - 目前是通过每次使用非常慢的递归查询来完成的。如果我只有一个每个用户的文件夹结构(例如,通过添加一个额外的“文档计数”字段,可以在每次文件夹中的文档发生某些事情时使用查询钩子更新该字段),这可以更好地处理结构体)。
您如何看待这种设计选择?我是否应该保持这种方式并只添加一个包含每个用户文件夹属性的附加表(例如,结构类似于 user_id、folder_id、document_count、last_modified、[我能想到的任何其他属性])?直接在系统上处理文件夹(通过使用系统命令)并将它们排除在数据库之外会更好吗?或者您有任何其他想法(可能是更适合的数据库?)如何以更方便的方式进行管理。
感谢您的帮助! :-)
【问题讨论】:
-
多个用户可以使用一个特定的文件夹?
-
有多少个文件夹?用户?文件? ETC?你在说什么?数百万,或者只有数千。对于数千人,我建议构建一个逻辑结构而不用担心性能。对于数百万人,让我们看看一些实际的模式和查询。 使用任何一种方法,您都可以编写性能不佳的查询。
标签: mysql database-design