2

自从我开始上学以来,我就一直使用这个网站作为一个很好的资源——但我以前从来没有遇到过这么具体的问题,我希望能得到一些帮助。在搞清楚数据库结构方面,我从来都不是最好的,我的任务是创建一个具有一些相当具体规范的 PHP/MySQL 测试引擎。

所以你可以更好地理解我在这里的目的 - 我试图考虑以下几点:

  • 需要管理员和学生登录,并提供不同级别的访问权限。
  • 管理员应该能够构建一个或多个测试并将其分配给一个或多个学生。
  • 对于管理员在测试中建立的每个问题,管理员应该能够分配一个分值。
  • 测试应该能够提出一个或多个问题。
  • 您的应用程序应支持三种基本问题类型:对错题、多项选择题和填空题。
  • 最终结果将显示总分,以及学生对每个问题的回答。
  • 学生应该能够看到他们有权访问的唯一测试的最终结果。
  • 管理员应该看到来自多个学生的测试结果。
  • 学生不得重考相同的考试。

大多数情况下,我正在尝试处理基本结构。一开始我有五张桌子,我将问题/答案部分压缩到一张桌子上——请原谅我在这里切换关系的糟糕尝试,因为我有 20 种不同的感觉:

我在正确的轨道上吗?有什么建议么?

4

1 回答 1

2

N-1 数据库设计的一个很好的经验法则。对于所有具有关系的表,您应该有 N-1 个关系(其中 N 是表的数量)。带有循环引用的表是禁止的。将作为安全组件并仅查看测试/问题/答案,您需要一个具有一些基本对象的设计:

  1. 管理员(或教师)表
  2. 测试台
  3. 学生桌
  4. 问题表

您没有在问题中提到它,但是如果您希望每个测试都与老师教授的课程相关联,那么您也需要它。使用这四个或五个表,您应该能够创建您的关系。提示:大多数这些关系是多对多的,因此需要一个外部参照表来解决这个问题。发回你对此做了什么,我们可以看看接下来会发生什么。

于 2013-02-28T16:56:46.173 回答