我试图设计一个游戏的数据库,我很难在玩家exp和基于关闭范围的数据库之间建立关联。类似等级1的是0 xp,等级2需要200 exp,3需要400,4需要800等等,我希望能够从“查询不能查询的玩家拥有54234 exp。他是23级”有内置的转换。SQL创建范围
在我见过的每个例子中(在类似的等级范例中),他们有一个学生被分配了一个A级的分数,他们完全忽略了这个事实,即学生得到了一个92可以表示为A.使用学生成绩数据库的人如何从“他的平均分数为73.9”变为“他得到了C”?
在表
CREATE TABLE Hero
(
hero INT NOT NULL,
totalExpEarned INT NOT NULL,
...
PRIMARY KEY(hero)
);
CREATE TABLE Level
(
level INT NOT NULL,
...
PRIMARY KEY(level)
)
我能想到这样做将是去像从0-199查找表的最简单方式的简化版本是1级,从200〜399是水平两个等等,这是一个可怕的方式来做到这一点。
老实说,我认为这是一个很好的跳过“优秀设计”规则并预先计算好的问题。也就是说,我会有一个“经验”字段和一个“级别”字段,每次我更新经验时,都会用PHP计算级别,如果它与当前拥有的级别不同,则更新它。它涉及更简单的查询,开销应该是微不足道的。 – ApplePie 2013-04-28 23:12:54