自从我上学以来,我就一直使用这个网站作为一个很好的资源 - 但我以前从未遇到过如此具体的问题,我希望得到一些帮助。在弄清楚数据库结构方面,我从来都不是最好的,而且我的任务是创建一个具有一些相当具体规范的 PHP/MySQL 测试引擎。
这样您就可以更好地理解我在这里的目的 - 我正在尝试考虑以下因素:
- 需要管理员和学生登录,并提供不同级别的访问权限。
- 管理员应该能够构建一项或多项测试并将其分配给一名或多名学生。
- 对于管理员在测试中构建的每个问题,管理员应该能够分配一个分值。
- 测试应该能够提出一个或多个问题。
- 您的申请应支持三种基本问题类型:对/错、多项选择和填空。
- 最终结果将显示总分以及学生对每个问题的回答。
- 学生应该能够看到他们有权访问的唯一测试的最终结果。
- 管理员应该查看多个学生的测试结果。
- 学生不得重复参加同一考试。
大多数情况下,我正在尝试处理基本结构。一开始我有五张 table ,我将问题/答案部分压缩为一张 table - 请原谅我在此处切换关系的糟糕尝试,因为我已经让它们有 20 种不同的感觉:
我走在正确的道路上吗?有什么建议吗?
最佳答案
N-1 中数据库设计的良好经验法则。对于所有具有关系的表,您应该具有 N-1 关系(其中 N 是表的数量)。带有循环引用的表格是禁忌。作为安全组件并仅查看测试/问题/答案,您需要一个具有一些基本对象的设计:
- 管理员(或教师)表
- 测试表
- 学生表
- 问题表
您在问题中没有提到这一点,但如果您希望每个测试与老师教授的类(class)相关联,您也需要这样做。有了这四个或五个表,您应该能够创建您的关系。提示:大多数关系是多对多的,因此需要外部参照表来解决此问题。发回您对此做了什么,我们可以看看接下来会发生什么。
关于php - 数据库设计/ERD - 测验引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15138482/