我的问题是关于数据标准化。
信息
我正在尝试将数据库中的测试结果制成表格。我要记录的信息是test_instance,user_id,test_id,完成(日期/时间),(测试时间),分数,不正确的问题和已复习的问题。
在大多数情况下,我认为我是根据表1来组织信息的,但是我想尽办法找出记录错误或已审查问题的最佳方法有些不为所动。请注意,我 不要 希望把所有不正确的问题集中在一个条目按表2。
我想为每个标记错误的问题(或复习的问题)单独输入一个条目。
注意:已 复习的问题是一次或两次被错误标记的问题,因此需要再次进行测试。
表格1
------------------------------------------------------------- | instance | user_id | test_id |completed |duration|score| ------------------------------------------------------------- | 1 | 23 | 33 | 2JAN2012 | 20m | 75 | | 2 | 11 | 12 | 10DEC2011| 35m | 100 | | 3 | 1 | 3 | 3JUL2008 | 1m | 0 | | 4 | 165 | 213 | 4SEP2010 | 10m | 50 | -------------------------------------------------------------
表2
------------------------ | instance ||wrong Q| ------------------------ | 1 || 3,5,7 | ------------------------
最终,我想知道随着时间的流逝,用户有多少次将某个特定问题弄错了。另外,我需要跟踪错误测试来自哪个测试。对于已审查的问题也是如此。顺便说一句,有可能在同一情况下对问题进行复查和发现错误。
我想出了两种不同的方式来表示数据,但我都不喜欢它们中的任何一种。
------------------------------------------------- | instance | Q number | Wrong | Reviewed | -------------------------------------------------
或者
--------------------------------------------------- | user_id | test_id | Q number | Wrong | Reviewed | ---------------------------------------------------
注意:错误/已审核类别正在计算Q号落入该类别的次数。
我的问题汇总
如何有效地在表格中表示错误/复习的问题?表1是否设置有效?
编辑: 已被错误回答的问题可用于生成新的测试。测试只会使用不正确的问题。如果进行了生成的测试,则测试的问题将被标记为已复习。分数不会被更新,因为它将是一个新测试并且将生成一个新的test_id。
注意 -可以重新参加旧的考试,但分数不会更新。将为进行的每个测试创建一个新实例。
关于生成的测试,我想这意味着我将需要再包含一个表来跟踪最初来自哪个测验的问题。抱歉-我一直都没有想到。
谢谢
我很难选择答案,因为每个人都给了我非常有用的信息。我的最终设计将考虑您所说的一切。再次感谢。
谈到规范化,只是为了确保您可以从数据库中检索所有类型的计算数据,我将提出一个更复杂的模型,该模型最终将变得更易于管理。
您需要以下表格
test_table PK: id_test testDescription question_table PK: id_question FK: id_test questionDescription instance_table *please note that duration and scores will be calculated later on PK: id_instance FK: id_user FK: id_test startingTime endingTime question_instance_table PK: id_question_instance FK: id_instance FK: id_question questionResult (Boolean) (please note here that the PK could be id_instance + id_question ...)
回到您的需求,我们将提供以下服务: