数据库设计/ ERD - 测验引擎

时间:2013-02-28 14:50:35

标签: php mysql database database-design erd

自从我在学校开始以来,我一直在使用这个网站作为一个很好的资源 - 但我之前从未遇到过这个具体的问题,我希望得到一些帮助。在确定数据库结构时,我从来都不是最好的,而且我的任务是创建一个具有一些相当具体规范的PHP / MySQL测试引擎。

因此,您可以更好地了解我的目标 - 我正在尝试考虑以下因素:

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

大多数情况下,我试图处理基本结构。我在开始时有五张桌子,我将问题/答案部分缩进到一个表格中 - 并原谅我在这里改变关系的可怜尝试,因为我有20种不同的感觉方式:

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

1 个答案:

答案 0 :(得分:1)

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

  1. 管理员(或教师)表
  2. 测试表
  3. 学生表
  4. 问题表
  5. 你没有在你的问题中提到它,但是如果你希望每个测试与老师教的课程相关联,你也需要这样做。通过这四个或五个表,您应该能够创建您的关系。提示:这些关系中的大多数是多对多的,因此需要一个XRef表来解决这个问题。回复你对此做的事情,我们可以看看下一步是什么。