2010-03-29 4 views
2

나는 설문 조사 결과가있는 데이터 테이블을 가지고 있으며이 데이터에 대해 특정 계산을 수행하려고합니다. 데이터 구조는 다소 다음과 같이이다 :데이터 테이블의 계산

____________________________________________________________________________________ 
| group |individual |  key   |  key   |  key   | 
|  |   |subkey|subkey|subkey|subkey|subkey|subkey|subkey|subkey|subkey| 
|  |   |q|q|q |q |q |q|q|q |q|q|q |q |q |q|q|q |q|q|q |q |q |q|q|q | 
|-------|-----------|-|-|--|--|---|-|-|--|-|-|--|--|---|-|-|--|-|-|--|--|---|-|-|--| 
| 1 | 0001  |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 | 
| 1 | 0002  |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 | 
| 1 | 0003  |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 | 
| 2 | 0004  |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 | 
| 2 | 0005  |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 | 
| 3 | 0006  |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 | 
| 4 | 0007  |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 | 
------------------------------------------------------------------------------------ 

그래서, 모든 개인은 그룹에 속하고, 몇 가지 질문에 대한 답변했다 (내가 잘라 모든 행을 붙여 넣은 모든 데이터가 유사한 것을 무시). 이 질문은 항상 키와 하위 키로 그룹화됩니다.

그룹화를 기반으로 평균, 편차 및 유사성을 계산하는 간단한 방법이 있습니까?

public float getAverage(int key, int individual); 
float avg = getAverage(5,7); 

같은 뭔가 나는 내가 무엇을 요구하고있어 가능한 작업하는 것을 쉽게하기 위해 C#에서 데이터를 구성하는 가장 좋은 방법 일 것입니다 무슨 생각? 모든 엔티티에 대한 수업을 시작했지만 어딘가에서 혼란스러워졌고 무언가가 작동을 멈췄습니다. 그래서이 길을 계속하기 전에 다른 일을하는 것이 더 나은 방법이 있는지 궁금합니다.

는 (모든 개인은 또한 연령 집단 및 같은 변수를 설명 할 수 있지만, 그 기본 기능에 중요하지 않습니다.) 데이터베이스에서 데이터를 요청할 때

우리의 현재 솔루션은 쿼리에서 인라인 모든 계산을 수행합니다. 이 방법은 효과가 있지만 쿼리 속도가 느리며 개별 쿼리 + 개인 + 키 * 개인과 동일합니다.

제안 사항?

답변

0

데이터베이스에서 응용 프로그램으로 계산을 이동하면 많은 개선이있을 것으로 생각됩니다.

정규화 및 색인 추가를 통해 데이터베이스 디자인을 개선 할 수 있는지 알아 보려면 데이터베이스 설계를 검토하는 것이 좋습니다. 대부분의 데이터베이스에는 주어진 쿼리를 기반으로 설계 권장 사항을 작성할 수있는 도구가 있습니다. 그런 다음 실행중인 쿼리를보고보다 효율적인 쿼리 작성 방법이 있는지 확인하십시오. 개인적으로 O (n)을 O (log n)로 다시 작성하는 쿼리를 보았습니다. 공유에 익숙한만큼 디자인 및 쿼리를 많이 게시해야합니다.

0

평균, 표준 편차 및 기타 다른 사항은 데이터를 한 번 통과시키고 개수, 합계, 데이터 요소의 제곱의 합을 누적하여 계산할 수 있습니다. 이것은 컴퓨터 앞에있는 날들에 설명 된 것처럼 카드의 모든 데이터를 펀칭하고 보드에 연결된 와이어로 프로그래밍 된 카드 기계를 통해 실행 한 다음 합계를 누적 한 다음 계산을 수행하여 악용되었습니다.

데이터베이스에서 데이터를 가져올 때 그룹별로 데이터를 준 요약 할 수 있다는 것을 제외하고는 지루한 역사 수업입니다.

또한 설명적인 (그룹) 열에 인덱스를 설정하는 것이 좋습니다.

0

테이블에서 "q"라는 열 아래에 나열된 1,7,5 같은 값이 실제 답변 또는 정답 수를 나타 냅니까?

어쨌든, 당신은 당신의 데이터를 구성하기 위해 다음 필드에 데이터 테이블을 사용할 수

그룹 ID, IndividualID, -a Keyid 키 ID, SubKeyID, QuestionID, 답변