2012-07-11 2 views
0

나는 세 개의 테이블을 가지고 있습니다. -Users -Posts -Activity (게시물의 좋아요 또는 싫어요 정보 포함).사용자 상호 점수 저장을위한 데이터베이스 구조 제안

내 비즈니스 요구 사항은 사람들이 좋아하는 것과 싫어하는 것에 따라 사람들을 따라하도록 제안하는 것입니다.

나는 상호 점수가 사용자의 좋아하는 것과 싫어하는 것에 따라 계산되는 과정을 만들었습니다.

예 : 사용자 AA가이 게시물을 좋아하는 다른 사용자 (예 : 50 명)보다 사용자 ID 100 인 게시물을 좋아하는 경우 각 공통 게시물을 추가하여 모든 사용자 50 명에 대해 사용자 AA에 대한 점수를 계산합니다 (100 위의 경우, 그들은 수백 개 이상으로 갈 수 있습니다) 점수와 마찬가지로, 나는 사용자 AA에게 사용자 AA가 가장 높은 상호 점수를 가진 사용자를 제안합니다.

내 문제는 평면 테이블에서 각 사용자의 계산을 다른 사용자 (즉, 매번 시작될 때부터 프로세스를 시작할 필요가 없도록)에 저장할 때 테이블이 커지게된다는 것입니다. 사용자의 상호 점수의

감사

답변

1

나는 그것이 테이블 공간의 문제를 생각하지 않습니다를이 데이터를 저장하기 위해 나에게 최고의 데이터베이스 테이블 구조를 제안하십시오. 모든 사용자 쌍의 점수를 계산하면 O (n^2) 점을 얻게됩니다. 당신은 아마 모든 사용자와 좋은 점수를 얻는 것처럼 보이는 ppl을 얻고 그 쌍 사이의 점수 만 계산할 수있는 추론을 사용해야합니다. 각 사용자 당 최고 10 명의 사용자 만 계산하도록 제한 할 수 있습니다. 그렇게하면 많은 공간을 절약 할 수 있고 더 빨리 작업 할 수 있습니다. 모든 소셜 네트워크와 이러한 종류의 응용 프로그램은 사용자가 추론하고 모든 계산을 할 때 속임수를 씁니다 ... 같은 것을해야합니다 ...

관련 문제