PHP/MySql 测试应用程序

标签 php mysql serialization

这是一个比较笼统的概念性问题,但我目前正在开发一个测试/测验应用程序,并且想要

a) 可以随时更改问题/答案/顺序

b) 在数据库中保存每个已完成的测试,并附上报告

我已经构建了后端(在 CI 中),因此有一种很好的用户友好方式来编辑问题,但我正在尝试考虑保存已完成测试的最佳方式,而不会浪费内存和空间。

问题是,如果我更改试题,我不希望它们改变人们过去所获得的存档结果。因此,我认为我需要在有人参加考试时对每个问题进行序列化,这样您就可以查看带有遗留问题的旧“成绩单”,即使这些问题不再存在。

虽然这看起来很庞大,但需要为某人参加的每个测试保存 40 多个问题。谁有更好的主意?

谢谢!

最佳答案

如果问题和问题的顺序偶尔会发生变化,那么我建议执行以下操作。

在问题表中,添加“版本”字段。每次您需要更改问题时,只需使用相同的引用文献但使用另一个版本号保存即可。 在答案表中,保存问题的引用及其版本。 或者,您可以将问题的版本保存在额外的表格中。

关于问题的顺序:如果顺序不是经常更改,或者如果顺序更改与问题更改同时发生,则可以将顺序号保存在版本控制表中。否则,问题顺序的实际功能位置可能在答案的版本控制表中。它就像问题的版本控制表,但它会保存问题的顺序和一个 Answer id,并且 Answer 表会多一个“version”字段。

插图:

[t_test]
- t_id
- t_title

[t_question]
- q_id
- test_id
- q_qood_answer
- q_current_version(而不是这个字段,你可以选择总是取最后一个版本)

[t_question_version]
- q_id
- q_version
- q_text
- q_order

[t_answers]
- a_id
- q_id
- q_version
- a_answer

关于PHP/MySql 测试应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5538694/

相关文章:

PHP 将时间设置为太平洋夏令时

mysql - Php/Mysql Union 和 Limit offset

java - 内部类不应该实现可序列化

python - Django REST Framework - 教程 - 困惑

java - 反序列化对象 java 列表 -> INVALID STREAM HEADER

带有 SQL 查询的 PHP 变量为空

php - Yii - getActiveFormWidget() 在核心中返回错误类型?

php - php5 和 php5-dev 有什么区别

Mysql和日期函数,它是否对每一行进行处理?

php - SQL事务和表SELECT LOCK说明