我正在开发一款游戏,就在不久之前,我开始着手加载和保存.
我一直在想,但我真的无法决定,因为我不确定哪个更有效率.
我的第一个选择:当用户注册时,只插入一条记录(进入'字符'表).当用户尝试登录时,并且在他/她成功完成后,服务器将尝试从用户加载所有信息(在多个表中分开,并通过mysql'LEFT JOIN'组合),它将运行它拥有的所有信息并将它们应用于实体实例,如果它遇到NULL(这意味着信息不在数据库中),它将自动使用默认值.在保存时,它将插入或更新,以便现在保存在加载时生成的任何默认值.
我的第二个选项:只需在注册时插入所有必需的行(当注册完成时从网站插入行).
下行到第一个选项:如果用户已经登录过,则无用检查,因为所有表都将在首次登录后生成.
第一个选项的优势:如果删除了表中的任何记录,它将插入默认数据,而不是踢掉玩家说它的字符信息已损坏/丢失.
缺点是第二种选择:它可能会浪费一些内存,因为所有表都是在注册时插入的,并且可能存在垃圾邮件机器人,以及甚至无法上网的人.
第一种选择的好处:我们不必检查服务器中的任何内容.
我还注意到第一个选项可能会搞砸任何搜索系统(如果我们尝试查找特定用户,则通过admincp).
我会使用第二个选项,将默认行添加到您的用户帐户,并将主用户表标记为不完整.这将保持整个数据库的数据完整性,而每个用户记录都是完整的.如果您需要删除记录,只需添加级联删除脚本即可清理房屋.
此外,我不会根据创建帐户的恶意机器人开发您的数据模式.如果您担心用户帐户的完整性,请在解决方案中添加某种数据验证,或者在符合特定条件(即创建的日期满足特定阈值)时清除不完整帐户.