我应该如何构建表格?

时间:2012-08-25 09:10:15

标签: mysql sql database-design

我正在创建一个小小的在线测验/游戏。我有一个users - 表,其中包含唯一的自动增量idusername字段,password字段和ip字段(来自此处)创建)。

处理登录和类似的东西。

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

每项任务的要求如下:

  1. 跟踪用户为给定任务完成的尝试次数
  2. 跟踪他的最后一次尝试
  3. 跟踪他失败的地方
  4. 跟踪他最短的成功尝试
  5. 跟踪他最近的成功尝试。
  6. 我要问的是基本上我应该如何构建我的表,以便尽可能顺利地工作,并尽可能少地讨厌恼人的SQL查询和代码。

    我是否应该为每个任务创建一个表,每行绑定一个用户名,并且字段对应上面的列表?或者一个大表绑定到用户名,表示哪个任务和所有字段对应上面的列表?

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

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

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

    提前致谢。


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

    由此我需要有一个新的表结构,用于类似于我上面描述的用户和任务的任务,但是对于任务和测试。

1 个答案:

答案 0 :(得分:1)

我没有完全回答你的问题,但我认为以下结构可能会对你有所帮助:

    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。