mysql - 我应该如何构建我的表格?

标签 mysql sql database-design

我正在创建一个小型在线测验/游戏。我有一个users -包含唯一自动增量的表 id ,一个username场,一个password场和一个ip字段(从创建它的地方)。

它处理登录和类似的事情。

然后我需要跟踪用户进程。用户必须完成多个任务或级别。但是您希望查看它。

每项任务的要求如下:

  1. 跟踪用户对给定任务进行的尝试次数
  2. 跟踪他的最后一次尝试
  3. 跟踪他失败的地方
  4. 记录他最短的成功尝试
  5. 跟踪他最近的成功尝试。

我问的基本上是我应该如何构建我的表,使其尽可能顺利地工作,并且需要尽可能少的烦人的 SQL 查询和代码。

我是否应该为每个任务创建一个表,并将每一行绑定(bind)到用户名和与上面列表相对应的字段?或者一个大表,其中一行绑定(bind)到用户名,指示哪个任务以及与上面列表相对应的所有字段?

我不确定,这就是我问的原因。

值得一提的是:我目前拥有的任何东西都不是一成不变的,所以我可以改变你想要的任何东西。

非常感谢任何帮助和/或建议。

提前致谢。

<小时/>

编辑: 我还将为每个任务创建一张表:tasks(id, name, description, finish_message)

因此,我需要为任务建立一个新的表结构,类似于我上面为用户和任务描述的表结构,但用于任务和测试。

最佳答案

我没有完全理解你的问题,但我认为以下结构可能对你有帮助:

    1. users(userid, username, password, ipaddress)
    2. tasks(taskid, task_description,...)--any other details you want
    3. task_attempted(userid, taskid, last_successful_attempt, shortest_successful_attempt, last_attempt, last_failed_testid);
    4. tests(testid, taskid, ...)--other details

请澄清您的第三个要求:

Keep track of where he failed

如果我没有理解错误,用户可能无法继续进行下一个任务测试,直到成功完成当前测试,因此您可以为 test_id 添加一个字段,以跟踪特定任务中失败的 test_id。

关于mysql - 我应该如何构建我的表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12120667/

相关文章:

sql - MySql 以秒为单位的两个时间戳之间的差异?

Android:SQLite,cursor.moveToNext() 总是返回 false

mysql - SQL Propper索引,范围+普通搜索同时进行

database - 具有共享数据库的微服务?使用多个 ORM?

mysql - 我该如何优化这个 ruby​​ 脚本?

mysql - Webmin - 将子域关联到多个数据库

mysql - 更改名称中包含空格的表

mysql - SQL LEFT JOIN分配?

mysql - 连接数百万行表的性能

mysql - 如何比较3个表并在mysql中合并它们的列