关系数据库:交替模型的层次结构,外键属于哪里?

时间:2017-11-14 06:52:15

标签: sql relational-database

我需要制作推荐问卷,回答一堆问题会产生一些独特的结果;沿途的决定应该影响最终结果。

将它设为非常基本没问题 - 所以我有两个模型 - QuestionsAnswers。每个问题都有两个答案,每个答案都会引出另一个问题 - 所以绘制出来的hieararchy最终会像二叉树一样:

          Question 1
         /         \
    Answer 1      Answer 2
      /              \
 Question 2        Question 3
  /       \         /       \
Ans3     Ans4     Ans5     Ans6
...

所以用简单的英语我会说每个问题has many都会回答,每个回答has one父母问题和has one孩子的问题。

对于典型的has many关系,凭借我的经验,我可能只是将外键放在many端,而不用担心one结束;所以Answer question_id会得到has_one并不是唯一的。

对于question_id关系,任何一段关系似乎都没问题 - 但我已经有了answer_id的答案;所以也许把'#34;父母"回答Question.answer关于这个问题是合适的,但这似乎有点混淆词汇 - 看起来像question_ids我不会直观地理解它导致这个问题的反应。 ..

或者,我可以在Answer模型中启用两个 this.authProvider.loginUser(email, password).then( authData => { this.loading.dismiss().then(() => { this.navCtrl.push(TabsPage); //this.navCtrl.setRoot(TabsPage); }); - 但是然后必须区分哪个是"父问题"哪一个是"后续问题" ...

另一个考虑因素是当我拿到"下一个问题"从数据库(根据答案),我也想得到可能的答案显示。虽然不是要求优化性能,但是做到这一点并不是很好。 (或者至少没有完全错误)。

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

在朋友们的帮助下,找到了我想要保存的正确用语 - 它是一个决策树!

https://en.wikipedia.org/wiki/Decision_tree

然后对这个类似问题的回答https://stackoverflow.com/a/5278239/1592915建议在问题之间采用基本上是人与人之间关系的方法,其中答案表是中间人。