iOS应用程序考试的核心数据模型
我正在构建一个用于考试的iOS应用程序,我想在继续之前确定我的模型 我觉得这篇文章很有帮助: 我只是想要一些关于为核心数据实现简化版本的建议 以下是我的一些假设:iOS应用程序考试的核心数据模型,ios,objective-c,core-data,database-design,database-schema,Ios,Objective C,Core Data,Database Design,Database Schema,我正在构建一个用于考试的iOS应用程序,我想在继续之前确定我的模型 我觉得这篇文章很有帮助: 我只是想要一些关于为核心数据实现简化版本的建议 以下是我的一些假设: 每个用户可以进行一次测试 每个用户在每次测试中都有一组答案 每个测试有一个用户 每个问题都有很多答案 以下是我的核心数据模型: 问题: 这个模型是否准确地反映了我的假设 是否需要测试问题和用户答案? 理论上,我可以直接在测试和问题之间建立关系测试-->>问题 如有任何改进意见,将不胜感激 您应该能够删除测试问题和用户答案
- 每个用户可以进行一次测试
- 每个用户在每次测试中都有一组答案
- 每个测试有一个用户
- 每个问题都有很多答案
- 这个模型是否准确地反映了我的假设李>
- 是否需要
和测试问题
?用户答案
- 理论上,我可以直接在
和测试
之间建立关系<代码>测试-->>问题问题
- 理论上,我可以直接在
- 如有任何改进意见,将不胜感激
您可以使用您定义的模型,但在验证阶段,要知道用户是否通过了测试可能有点棘手,因此我建议您进行以下简化(我没有考虑字段,但只考虑实体以快速完成): 使用此模型,当您的用户验证其测试时,您可以进行如下一次迭代:
for(Answer* a in answers)
{
Question *q = a.question;
if(a.isCorrect)
{
// ... increment counter by questions ..
// ... check with corresponding question by using variable 'q'
}
}
我建议您添加一个新的实体
Category
,它可能有助于在UI中向用户显示表单(例如使用UITableView
)。这样,表的数据源将显示类别列表,分区标题将显示类别名称,单元格将显示问题 您提出的模型确实反映了您的假设,但正如其他人所指出的,测试问题和用户答案是不必要的,因为它们分别对应于测试和用户
但是(正如其他人所说的那样),我会重新考虑是否每个用户只需要一个测试,每个测试只需要一个用户。事实上,您的假设包括“每个用户每次测试都有一组答案”,这意味着可能会有多个测试。为了适应这一点,我将添加一个中间实体,即尝试,它将记录用户、测试、日期等的详细信息。通过从用户到尝试以及从测试到尝试的一个或多个关系,您可以允许a)多个用户进行同一测试,以及b)任何用户进行多次尝试,要么尝试不同的测试,要么多次尝试相同的测试。我还将向Test添加testName属性,向Question添加questionTitle属性,以便在tableViewCells中使用,等等
虽然不在您的假设中,但您的模型当前要求任何一个问题只能出现在一个测试中。我建议改变这一点:然后你可以通过从一组问题中随机选择来生成不同的测试。但这确实需要另一个实体“TestQuestionDetails”,它与Test和Question有一个或多个关系,可以记录问题编号等细节。同样,正如其他人所建议的,我会将问题的category属性转换为一个单独的实体。这将允许您添加一个属性,例如“sortIndex”,以便您可以根据需要对类别进行排序(您可能不希望按字母顺序排序)
最终结果如下所示: