评分系统的SQL数据库模型
实现以下目标的最佳方式是什么:我可以通过API访问一些玩家信息。我现在想在sql数据库中保留使用玩家信息计算分数的方法。如何做到这一点 例如: 我想根据RushingYards:Int、触地得分:Int和拦截得分:Int计算分数。大致上,我想创建一个具有以下规格的评分系统:评分系统的SQL数据库模型,sql,postgresql,scala,Sql,Postgresql,Scala,实现以下目标的最佳方式是什么:我可以通过API访问一些玩家信息。我现在想在sql数据库中保留使用玩家信息计算分数的方法。如何做到这一点 例如: 我想根据RushingYards:Int、触地得分:Int和拦截得分:Int计算分数。大致上,我想创建一个具有以下规格的评分系统: 1 point for every 25 RushingYards, 3 points for every Touchdown 2 points for every Interception 用纯代码编写很简单,但我如何将
1 point for every 25 RushingYards,
3 points for every Touchdown
2 points for every Interception
用纯代码编写很简单,但我如何将其放入SQL DB中,因为我需要多个动态创建的“评分系统”?最后,我想检索持久化的数据,并使用它来计算Scala中的分数
谢谢。如果没有表格的任何细节,就不可能有真正的答案。但有一种可能的方法:
SELECT
SUM(CASE type
WHEN 'RushingYards' THEN (FLOOR(yards / 25))
WHEN 'Touchdown' THEN 3
WHEN 'Interception' THEN 2
) AS points
FROM player_actions
GROUP BY ...
一旦您确定了表模式应该是什么,查询就会自然地进行。如果没有一些假设,很难做出明确的回答,但我会做出这些假设并尝试 我只需将从API检索到的数据存储在数据库中。如果API高度可用,并且我可以随时(再次)获取数据,我甚至可能不会这样做 如果规则很简单,并且仅限于您概述的内容(加上有限数量的附加规则或规则类型),那么您只需将规则编码到应用程序逻辑中,并拥有一个存储规则输入的表。例如,规则输入表可能类似于:
RuleInputs
------------------------
RuleInputId
LeagueId
NumPointsPer25Yards
NumPointsPerTouchdown
NumPointsPerInterception
NumPointsPerSack
这是过度简化,但你得到的想法
如果规则可以随时更改,并且规则类型也可以更改(例如,教练每次对ref喊1分),那么您可能会看到更多的业务规则引擎,它必须允许灵活的字段/元数据和可插入的应用程序逻辑
一个元数据模型是。您也可以考虑某种无模式模型的NoSQL解决方案。我建议不要使用元数据模型,除非您必须这样做。如果您可以定义前台所有可能的规则类型,它将产生一个更简单的系统。构建一个可插拔的规则引擎对SO来说太难了(而且不是一个小爱好)。我想四处看看,看看是否存在某种开源系统。你知道关于上一段所说内容的阅读材料吗?在我的答案末尾添加了一些信息。