我正在为我正在研究的系统(php,javascript,sencha)构建一个基本的文件管理组件。我试图以一种方式说服自己是否需要在数据库中存储有关通过系统管理的文件的额外信息。一方面,我不愿意通过尝试确保存储在数据库中的信息反映在文件系统中而使简单设计复杂化。我想如果出于某种原因它们变得不同步就会发生噩梦。即路径未正确更新。在文件系统中依赖什么似乎更容易。我不需要像ACL那样的控制机制。
在大多数情况下,目录结构对用户是隐藏的,因为他们实际上并不关心文件系统存储在何处。有点像电子邮件附件。附件与数据库中的其他数据相关。我最初的想法是通过使用目录在文件系统中创建关系。例如:
根
... Project_id_1
...... Theme_id_1
......... Topic_id_1
......... Topic_id_2
......... Topic_id_3
...... Theme_id_2
...... Theme_id_3
... Project_id_2
...... Project_id_3
ID也是数据库中与其相关的项目的记录ID。我认为这样可以正常工作,除非我需要将其显示为树视图。我需要提取每个目录的关系,以便显示有意义的名称。也许这是在其他地方获得的简单性的良好折衷。即不必在每个主题名称更改的情况下重命名目录。
如果我决定在数据库中存储关于每个文件的更多信息,除了有用的(但不是必要的)信息之外我还能获得什么,例如谁上传它,日期等等。当然,任何其他原因我应该考虑其他设计也将受到赞赏。大多数OTS的东西,要么提供太多我不需要的功能,要么是太多的工作来改造到系统中。
答案 0 :(得分:1)
我想关键问题是你存储的附加信息是否足够值得给它带来麻烦。如果你建造它,它们会来吗?
我见过很多系统,有人去了很多工作而没有费心去问,有人会关心吗?
我不知道您的用户想要什么或需要什么,所以如果没有更多信息我就无法回答您的问题。
<强>更新强>
回复你的评论:
当我需要跟踪的关系时,我已经存储了有关数据库中文件的信息。想到的第一个示例是一个Web应用程序,用于跟踪我们组织生成的设备的建议设计更改,用户可以在其中添加附件(Word文档,其中包含更多详细信息,工程图纸等),以及将要上载并与之关联的建议。记录设计变更。因此,我们将所有这些文件放在某个目录中的某个目录中,然后在数据库中为每个附件创建了一条记录,将其重新绑定到设计更改记录中。我现在忘记了除了设计变更记录和文件名的密钥之外还有其他数据,但肯定会有上传,由谁等等的事情。
答案 1 :(得分:0)
我会说:
今天:没有。不要根据未来可能的需要创建工作。
明天?是的,只要你真的需要。你提到你已经有了一个数据库,所以它不像你必须要花掉很多开销。