这是用于文档跟踪的良好数据库设计实践吗?

时间:2019-05-22 13:53:00

标签: database-design many-to-many one-to-many coalesce dense-rank

我正在尝试设计一个数据库来跟踪文档。每个文档可以具有多个版本,并且每个版本都具有与之关联的许多属性。但是,每个版本都可以链接到多个类别。版本之间唯一的共享属性是文档名称。

我当前的设计是

文档表:

  • id(主键)
  • 名称

DocumentVersions表

  • id(主键)
  • document_id(外键)
  • 说明
  • revision_reason
  • 等...
  • 时间戳

DocumentCategories表

  • id(主键)
  • 名称

DocumentVersionsDocumentCategories表

  • document_version_id
  • document_category_id
  • (它们共同构成主键)

我想知道这种结构是否还可以?另外,使用DocumentVersionsDocumentCategories连接表而不是仅使用具有以下字段的DocumentCategoriesTable会是什么情况:id,document_version_id,名称?而且,是否有任何理由在“文档表”上具有时间戳记字段?

api将需要能够在文档上进行搜索,过滤和分页,以显示每个文档的所有类别以及最新版本的时间戳。即返回像这样的文档数组:

[{ name: "first doc", categories: "first category, second category", timestamp: 01/01/2019 }, 
{ name: "second doc", categories: "second category", timestamp: "01/01/2020 }, 
{ name: "third doc", categories: "fourth category", timestamp: 01/01/2019 }]

我猜我将需要加入所有这些表并使用密集排名,以及合并吗?

0 个答案:

没有答案