首页 > 解决方案 > Question-Answer-User实体的数据库设计。特别是在可能存在 N 级嵌套问题的情况下

问题描述

我最终遇到了用户问题/答案的复杂数据库设计问题,并考虑了您的帮助或建议。看起来这是罕见的情况,通常会出现。

用户应该能够提供提供的问题的答案(到这里看起来很容易也很好)。现在我们有一种要求,我们将提供 N 级嵌套问题。

让我通过一个例子来解释它,

Question - 1 : What's your favourite food ? (Very simplest - level -1)
Question - 2 : Do you like football match ?  (Level - 1 )
               Yes ? No ? (Level-1.1 or call it 2nd nested level)
                         if No then Why ? (Level - 1.1.1 or call it 3nd nested level)

同样,到目前为止,我们有多达 5 个嵌套级别的题库,我希望您对我们如何做到这一点提出意见/建议?

任何建议都会非常明显!

标签: sqlpostgresqldatabase-design

解决方案


您只需要在 Question 表上有一个 ParentQuestionId。对于顶级问题,这可以为 NULL。

例如:

Question Id: 1
ParentId: NULL
Text: Do you like football match?

Question Id: 2
ParentId: 1
Text: If No then Why?

假设所有问题最多有一个父级,这允许无限嵌套,并且每个级别的无限问题,这对我来说似乎很有意义......

这是一个标准的树层次结构,因此您应该能够很容易地找到此设计的示例和支持它的查询。


推荐阅读