2013-02-12 2 views
0

다음을 수행하는 가장 좋은 방법은 무엇입니까? API를 통해 일부 플레이어 정보에 액세스 할 수 있습니다. 나는 이제 SQL 데이터베이스에서 플레이어 정보를 사용하여 점수를 계산하는 방법을 유지하려고합니다. 어떻게 그것을 성취 할 수 있습니까? 예를 들어채점 시스템의 SQL 데이터베이스 모델

:

내가 RushingYards에 따라 점수를 계산하려면 : INT, 터치 다운 : 지능과 인터셉트 : 지능. 꽤 많이, 나는 다음과 같은 사양으로 채점 시스템을 만들려면 :

1 point for every 25 RushingYards, 
3 points for every Touchdown 
2 points for every Interception 

순수 코드에서 이것을 작성하는 것은 간단하지만, 내가 여러 동적으로 생성 "득점을 필요로하는 방법이 나는 SQL DB에 넣고 있습니다 시스템 "? 마지막으로, 보존 된 데이터를 다시 검색하여 Scala에서 점수를 계산하는 데 사용하고 싶습니다.

감사합니다.

답변

1

몇 가지 가정없이 확실하게 대답하기는 어렵지만 이러한 가정을하고 시도해 보겠습니다.

나는 단순히 데이터베이스에서 검색된 데이터를 데이터베이스에 저장합니다. API가 고 가용성이었고 원하는 경우 언제든지 데이터를 다시 얻을 수 있다면이 작업을 수행하지 못할 수도 있습니다.

규칙이 단순하고 제한된 수의 추가 규칙 또는 규칙 유형 외에도 개략적으로 설명한 경우 규칙을 응용 프로그램 논리에 코딩하고 규칙 입력이 저장된. 예를 들어 규칙 입력 표는 다음과 같이 표시 될 수 있습니다.

RuleInputs 
------------------------ 
RuleInputId 
LeagueId 
NumPointsPer25Yards 
NumPointsPerTouchdown 
NumPointsPerInterception 
NumPointsPerSack 

이것은 단순화되었지만 아이디어를 얻을 수 있습니다.

규칙이 언제든지 변경 될 수 있고 규칙 유형이 변경 될 수도있는 경우 (예 : 코치가 심판을 때릴 때마다 1 점) 비즈니스 규칙 엔진을 더 많이 볼 수 있습니다. 유연한 필드/메타 데이터 및 플러그 가능한 응용 프로그램 논리를 허용합니다.

하나의 메타 데이터 모델은 Entity-Attribute-Value입니다. 스키마가없는 모델을위한 일종의 NoSQL 솔루션을 고려해 볼 수도 있습니다. 꼭 필요한 경우가 아니라면 메타 데이터 모델을 사용하지 말 것을 권장합니다. 정면 규칙의 모든 가능한 유형을 정의 할 수 있다면 훨씬 간단한 시스템이 될 것입니다. 플러 거블 룰 엔진을 구축하는 것은 너무 많은 것입니다 (그리고 작은 노력이 아닙니다). 일종의 오픈 소스 시스템이 있는지 살펴볼 것입니다.

+0

마지막 단락에서 말한 내용에 대한 읽기 자료를 알고 있습니까? – DarkSensei

+0

내 답변 끝에 몇 가지 정보를 추가했습니다. –

0

테이블에 대한 세부 정보가 없으면 실제 답변이 불가능합니다. 그러나 가능한 방법은 다음과 같습니다.

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 ... 

테이블 스키마가 무엇인지 알아 내면 쿼리가 자연스럽게 진행됩니다.

관련 문제