根据范围区分文档.文档-类别-部门的关系


Discriminating documents by scope. The relationship for Documents-Categories-Departments

按类别区分文档

我正在研究的应用程序的一部分允许用户上传/浏览文件(*.pdf, *.jpg, *.docx…)。上传的文件存储在给定的类别下,并由Document实体表示。

文件

本;<<strong>类别/strong>是 1 : 1

本;<<strong>类别/strong>是 1 : M

对应的DDL

例如,考虑这样一个类别层次结构(全局文档):
  • Normative documents (根分类树中的)

    • 工厂标准
      • 技术条件
    • 区域标准
  • Reports (根分类树中的)

    • 统计(每月)
    • 统计数据(按产品类型)

按范围/部门区分文档

另外,我们将文件区分为全局文件 (工厂范围)和部门文件

每个部门 '有'一组文档类别(几乎所有部门都是一样的):

  • Guides (分类树中的根目录)
  • Reports (类别树根)
    • 统计(每月)
    • 统计数据(按产品类型)

我似乎弄不清楚文档 —<<strong>类别/strong>本;部门当提供文档范围时:

  1. 我们可以说department_id == 0的文档属于全局作用域
  2. department_id != 0的文档与某些部门范围有关
  3. 然后我们需要引入一个Departments_Categories表/关系,因为部门可以有不同的文档类别集。
  4. 然后我们可以通过category_iddepartment_id来导航文档。

但是departments_categories关系似乎很奇怪。我的解决方案不好吗?我如何对关系进行建模?

一个给定的类别不可能有很多文档吗?如果是这样,那就是很多:1。Many:1是由其中一个表中的一个额外列实现的——Documents表中的category_id

Many:Many需要一个额外的表。具体建议

你希望你的类别是一个层次结构。这将是一个挑战,因为没有MySQL工具来遍历这些。最好使用PHP代码来处理这个问题。

报表(如月度统计)通常是一个从数据库中生成信息的程序;它不一定是一个"文件",更不用说一个"类别"了。所以我不明白你为什么在同一个句子里提到报告和类别。如果报表不是从数据中计算出来的,那么它只是另一个文档,不应该被区别对待。