我正在为成就系统创建一个数据库(就像您在暴雪游戏中看到的一样)。我希望有一个GUI显示游戏中所有成就的当前进度,这意味着我需要为用户查询所有成就的进度才能填充GUI。我计划取得约100项成就。
这带来了设计问题。设计数据库和查询代码以查询约100位字段的进度的最佳方法是什么?
蛮力方法似乎是获取成就的整个行,然后对该行中的每个字段进行一些硬编码的字符串比较,以确定我们要处理的成就。
另一个可能的解决方案可能是基于表的列索引使用大的switch语句,并针对每种情况处理每个成就(要求不修改表,否则您必须重构很多C ++代码)。
我很好奇,听到你们可能对此有其他设计。
谢谢!
最佳答案
我建议使用3个表来构建解决方案。这些表是用户,成就和用户成就。在用户表中将使用u_id标识用户。将在成就表中使用a_id标识成就。然后,您可以通过在user_achievements表中插入一行来跟踪用户的成就,该行包括用于标识用户的u_id和用于标识成就的a_id。 user_achievements表还将包含一列,该列将为给定用户指定该成就的完成百分比。
关于c++ - 为成就系统设计MySQL表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12292485/