Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
评分系统的SQL数据库模型_Sql_Postgresql_Scala - Fatal编程技术网

评分系统的SQL数据库模型

评分系统的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 用纯代码编写很简单,但我如何将

实现以下目标的最佳方式是什么:我可以通过API访问一些玩家信息。我现在想在sql数据库中保留使用玩家信息计算分数的方法。如何做到这一点

例如:

我想根据RushingYards:Int、触地得分:Int和拦截得分:Int计算分数。大致上,我想创建一个具有以下规格的评分系统:

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来说太难了(而且不是一个小爱好)。我想四处看看,看看是否存在某种开源系统。

你知道关于上一段所说内容的阅读材料吗?在我的答案末尾添加了一些信息。