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

标签 php mysql database database-design erd

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

这样您就可以更好地理解我在这里的目的 - 我正在尝试考虑以下因素:

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

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

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

最佳答案

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

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

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

关于php - 数据库设计/ERD - 测验引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15138482/

相关文章:

php - Yii 框架,user.password 未定义

java - ResultSet 当数据为空时如何从对象中获取字符串?

mysql - 嵌套查询的性能

php - 保存可见的用户日志

php - WordPress 动态自定义菜单未显示正确的结果

php - 在数组中的每个数组之间放置字符串 - PHP

php - 哪些 PHP 框架适合纯 Web 服务应用程序?

mysql - 在 SQL 场景中使用更新和插入查询时遇到问题

mysql - 列和行 (SQL)

database - 如何编辑 MySQL 中的字段,其中 fieldData ='String' 为新值 'String.a' ?