编程初学者 - 设计Web应用程序的建议

Fre*_*red 5 php mysql database-design

我做了一些HTML/CSS的乐趣,但我正在寻找一些编程技巧.

我一直在阅读PHP和MySQL.到目前为止,我还没有发现太难理解循环,条件语句等概念,但我想陷入困境并开始开发应用程序,然后才开始厌倦阅读和完全放弃.

我的想法...

我正好正在学习考试,并在纸上进行这些练习考试.我想为什么不将它放入应用程序,以便我可以在计算机上参加考试.

特征:

  • 该应用程序可以举行多个考试
  • 它可以随机化问题或按顺序显示它们
  • 可以选择显示每个问题的答案
  • 计算完成考试的时间
  • 管理页面添加新的考试和问题/答案

好吧,你们现在可以停止笑了,我知道这比Hello World好一步,但我想我会在某个地方开始!

我会用PHP/MYSQL或者RoR来开发它,如果你们认为它对初学者更好.我想我可以正确地阅读/写入数据库,但我不太确定网站结构,数据库设计以及通常最好的方法.

如果我的考试由50个问题组成,每个考试都会给出一个ID.如果我删除一个问题,如何用新ID更新其余的?即如果我删除问题3,则以下所有问题都需要将其ID转回1.

编辑:

我如何在数据库模式中表示一个考试的实例?考试和问题的关系将是一对多,因为问题将是单一考试的独特之处.但由于我的目标是进行多项考试,我该如何表达?


我如何在数据库模式中表示一个考试的实例?考试和问题的关系将是一对多,因为问题将是单一考试的独特之处.但由于我的目标是进行多项考试,我该如何表达?

Skl*_*vvz 8

好的,首先,欢迎:)其次:你的根本不是一个愚蠢的想法,事实上,你已经选择了学习如何编程的最佳方式:做一些有用和有趣的事情.

要回答您的问题:为什么您需要连续的问题ID?在数据库方面,您只需要每行具有不同的ID.

如果是显示要求,为什么不在显示期间为循环分配数字?因此,例如,当您执行a foreach显示问题时,您可以保留一个在每个循环中递增的索引变量,并使用它来显示序数.

希望这是你要找的,祝你好运!

  • 我认为部分混淆可能是"ID"的含义:(i)在数据库中,每个问题的主键应该_never_更改; (ii)在用户界面中,应该动态生成向用户显示的问题编号,正如我在答案中所建议的那样. (3认同)

Sam*_*son 2

在我看来,这里最重要的是数据库的结构。您将需要阅读一些有关数据库设计和规范化的内容。基本上,您需要逻辑地规划应用程序中存在的不同实体:

  1. 考试
  2. 考生
  3. 问题
  4. 答案

其中一些将相互关联:

  1. 问题 -> 考试
  2. 考生 -> 考试
  3. 答案 -> 问题

每当遇到这样的情况时,您需要确定关系是一对一、一对多还是多对多。问题可能属于一项或多项考试。这由你决定。如果问题仅属于一个考试,您可以在问题表中创建一个字段来保存 ExamID。如果一个问题可以属于多个考试,您将创建一个包含两个字段的新表:QuestionID、ExamID。这会建立您的多对多关系。

老实说,对于编程经验很少的人来说,这可能是一项非常艰巨且艰巨的任务。在我看来,你应该从更简单的东西开始,比如留言簿或迷你博客。

无论您决定构建什么应用程序,SO 都会一直为您服务。