Quiz应用程序的Nosql数据库的数据建模

时间:2018-10-18 18:12:10

标签: firebase nosql

您好,我目前正在使用Android的Firestore数据库开发一个测验应用程序。由于我是Nosql的新手,所以我想问一下我对数据模型的看法。

所以我想在数据库中有两个主要树。一种存储问题,另一种存储用户。 所以我想像的第一个:

struct FooData { /*...*/ };

struct Foo  {
    std::stack<FooData> bar;
}; 

另一个与用户:

mainCategory
    subCategory
        question
            -questionText
            -answerA
            -answerB
            -...

我的动力:

这样保存问题,因为用户可以选择特定的类别和子类别,因此,我不必加载不必要的数据。

我想以与问题ID保存在问题树中相同的方式将问题ID存储在用户上,以便在用户未回答问题的情况下更轻松地创建测试。对于我来说,了解用户已经回答的特定类别的所有问题的百分比也很重要。

我想将未完成的测试存储在用户身上,以便他可以返回未完成的测试。

提前感谢您的反馈

1 个答案:

答案 0 :(得分:0)

@szymon平衡器

我想知道您是否决定使用Firestore数据模型? 我正在处理类似的情况。 我有一堆问题,分为10个左右的类别,每个类别可以有几个子类别。 用户可以选择1到10个类别和测验问题总数,然后进行测验。 用户不应两次看到相同的问题(直到遍历整个问题库) 用户可以查看所有测验中尝试,正确,错误的总数,以及每个类别的得分。

所以我在考虑以下结构:

questions
  -questionId
     question: "..."
     category: "category"
     subCategory: "sub-category"

student
   -studentId
      quizs
        -quizId
           numberOfQuestions: "10"
           categories: 
           number Correct: ...
      answeredQuestions
         -answeredQuestionId
            quizId: *id to group as a quiz*
            questionId: *id to ref question content*
            quizQuestionNumber: *which question in quiz 4th question out of 10*
            category: *from question content*
            subcategory: *from question content*
            isCorrect: boolean *if they got question correct*

但是我不确定100%。 你有进步吗?

谢谢 画