[英]Dynamic SQL Tables A Good Idea?
我希望某个知识渊博的人能够为我解决所面临的问题。
我有一款游戏,其中我使用rails作为后端来处理许多任务,包括获取高分。 在游戏中,用户可以创建自己的关卡,其他用户随后可以在该关卡上玩。 我目前通过以下方式将分数存储在称为“分数”的表中
level_id:级别的ID
user_id:玩关卡的用户的ID
total_score:用户在该级别上获得的得分
每次用户完成一个级别时,都会显示该级别的高分,但是我看到的问题是,对于每个级别,我必须获取具有相应level_id的每个数据库条目,然后按降序对获取的条目进行排序总得分。 我觉得似乎有更好的方法,因为我目前必须对每个级别的每个分数进行排序,这似乎是重复的,而且我看到表中的条目很多,这可能会很慢,并获取level_id。
我想知道一种更好的方法是为每个级别创建一个表,该表可能包含user_id和total_score,并由total_score排序。 我觉得这将减少需要执行的排序过程的数量,但是我想知道在这种格式的数据库中是否有大量表存在不利之处,或者是否有其他可能的方法解决这个问题?
谢谢,
约翰
您当前的设计很可能已足够,并且每个级别使用一张表将带来的好处很少,但令人头疼。
基本上,ActiveRecord是围绕“固定”模式(在运行时不会更改)构建的,并且让每个模型实例占用其自己的表只是行不通。 相对数据库不是文档存储。
您将需要batsh * t crazy join来从多个级别提取信息,并且您基本上必须手动执行每种查询或编写自己的ORM。
您可以通过设置分数的默认顺序并加入来完成您想做的事情:
@level = Level.eager_load(:scores)
.find(params[:id])
但是首先,您需要问自己这是否是过早的优化 。 过早的优化通常会导致对错误问题的错误答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.