【发布时间】:2021-08-15 13:49:27
【问题描述】:
我需要以下结构:
项目 --(has many)--> 主题 --(has many)--> 文章
对于特定的项目,我想以最有效的方式查询文章。
对于这种情况,最好的数据库架构是什么?我正在考虑以下选项:
- 经典的
one-to-many与Topic.projectId和Article.topicId的关系。在这里,我担心必须先查询所有主题。 -
项目
--(has many)-->文章--(has one)-->主题(通过 Article.projectId 和 Article.topicId)。如果我需要每个项目的主题列表,还可以添加Topic.projectId。这样我直接查询项目的文章(不是通过选项 1 中的主题)。我在这里担心的是重复主题与项目的关系:直接,通过文章。 - 您的选择?
我使用的是Prisma,所以这里可能有它自己的最佳实践。
【问题讨论】:
-
如果你知道你的
projectId = XXX,那么SELECT * FROM Article A JOIN Topic T ON A.topicId = T.topicId WHERE T.projectId = XXX会得到你想要的。它只会检索Topics和projectId = XXX,而不是全部检索。
标签: sql database relational-database prisma