按类别区分文档
我正在研究的应用程序的一部分允许用户上传/浏览文件(*.pdf, *.jpg, *.docx…)。上传的文件存储在给定的类别下,并由Document实体表示。
文件本;<<strong>类别/strong>是 1 : 1
本;<<strong>类别/strong>是 1 : M
对应的DDL
例如,考虑这样一个类别层次结构(全局文档):Normative documents
(根分类树中的)- 工厂标准
- 技术条件
- 区域标准
- 工厂标准
Reports
(根分类树中的)- 统计(每月)
- 统计数据(按产品类型)
按范围/部门区分文档
另外,我们将文件区分为全局文件 (工厂范围)和部门文件。
每个部门 '有'一组文档类别(几乎所有部门都是一样的):
-
Guides
(分类树中的根目录) -
Reports
(类别树根)- 统计(每月)
- 统计数据(按产品类型)
我似乎弄不清楚文档 —<<strong>类别/strong>本;部门当提供文档范围时:
- 我们可以说department_id == 0的文档属于全局作用域
- department_id != 0的文档与某些部门范围有关 然后我们需要引入一个Departments_Categories表/关系,因为部门可以有不同的文档类别集。
- 然后我们可以通过category_id和department_id来导航文档。
但是departments_categories关系似乎很奇怪。我的解决方案不好吗?我如何对关系进行建模?
一个给定的类别不可能有很多文档吗?如果是这样,那就是很多:1。Many:1是由其中一个表中的一个额外列实现的——Documents表中的category_id
。
Many:Many需要一个额外的表。具体建议。
你希望你的类别是一个层次结构。这将是一个挑战,因为没有MySQL工具来遍历这些。最好使用PHP代码来处理这个问题。
报表(如月度统计)通常是一个从数据库中生成信息的程序;它不一定是一个"文件",更不用说一个"类别"了。所以我不明白你为什么在同一个句子里提到报告和类别。如果报表不是从数据中计算出来的,那么它只是另一个文档,不应该被区别对待。