【问题标题】:Database design for academic quiz app学术测验应用程序的数据库设计
【发布时间】:2017-10-15 10:33:34
【问题描述】:

我想制作一个包含许多科目的测验应用程序,例如数学、生物、物理、化学等。

为每个主题制作一个表格好不好,还是应该在表格“问题”中添加一个名为“主题”的列?

哪个性能最好?

【问题讨论】:

  • 如果唯一的额外列是subject,则添加该列并将其用作对包含实际主题的表格的引用。

标签: php mysql database database-design


【解决方案1】:

就我而言,在您的情况下,我将创建一个名为 subjects 的表来存储您的所有主题,然后在您的 problems 表中创建一个列 subject 以创建一个 foreign key在这两个表之间。

通过这种方式,您可以轻松地为您的主题添加一些特定参数(作为难度)并轻松检索这些参数。

祝你的新项目好运!

【讨论】:

  • 谢谢!无论如何,您知道从problems 表中检索随机问题的最佳方法吗?我的意思是,我只想要 50 个最新记录中的 30 个随机问题。使用 SQL 查询 rand() 或检索 50 条最新记录然后使用 PHP 随机选择其中 30 条更好吗?谢谢
  • 如果您正在寻找最佳性能,您必须通过 SQL 请求获得所需的 30 个随机问题。使用LIMIT 直接从数据库中获取数据总是更快,而不是获取所有结果以便稍后在 PHP 中处理它们。如果是这样,请不要忘记将答案标记为正确。谢谢! :)
【解决方案2】:

我希望您的逻辑数据模型是一个带有主题的表(带有一个单独的链接表来列出您的主题)。
从构建它的性能角度来看,除非行数很大,否则我不认为您需要妥协设计(假设您使用的是成熟的数据库技术,如 SQL)。

【讨论】:

    猜你喜欢
    • 2011-04-28
    • 2012-08-19
    • 2012-12-09
    • 2019-10-21
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    相关资源
    最近更新 更多