【问题标题】:Database Design/ERD - Quiz Engine数据库设计/ERD - 测验引擎
【发布时间】:2013-02-28 14:50:35
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 与其发布图片链接,不如在 StackOverflow 上发布您的信息。您还不能发布图片,因为您没有足够的声誉 - 只需发布列出您的表格和每个表格中的列的文本即可。
  • 也停止使用前缀'tbl',完全有必要把它去掉。读取 ERD 的冗余和混乱。

标签: php mysql database database-design erd


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多