2012-01-06 4 views
0

최고 점수를 업로드 할 때 점수를 친구와 비교할 수 있는지 궁금합니다 (더 간단하다면 선택한 연락처 만)? 그렇다면 누군가가 올바른 방향으로 나를 가리킬 수 있습니까? 어떻게해야합니까? 나는 이것에 대해 Google에서 유용한 것을 찾지 못했습니다. WhatsApp와 같은 앱을 사용하면 메시지를 보내려는 특정 연락처를 선택할 수 있기 때문에 가능한 한 눌러야합니다. 관련 : 최고 점수를 업로드하기 위해/cloud를 사용할 수 있습니까? 아니면 웹 공간을 사용해야합니까?최고 점수 업로드 - 친구에게만 표시하는 방법?

답변

2

iOS/etc에만 해당되는 답변이 없습니다. 응용 프로그램과 통신 웹 사이트 서비스 -

당신이 일반적으로 REST (일반 오래된 XML 또는 일반 오래된 JSON 또는 POX/POJSON) - 노출되어 어떻게 할 것인지

은 우정을 협상에 대한 책임 것을, 높은 점수를 업로드하고 높은 점수를 얻는다. 이는 사용자가 제어 할 수있는 데이터베이스를 공격하거나 클라우드 서버에 연결합니다. 두 가지 방법 모두 문제가 없습니다 (SQL 개념을 적용하려면 Azure가 좋은 옵션입니다).

데이터베이스 내부에서 친구 목록을 유지 관리 할 수 ​​있습니다.이 설정은 매우 간단한 구조입니다.

:

User: ID = 1, Name = Joe 
User: ID = 2, Name = Fred 
Friendship: User1 = 1, User2 = 2 
Friendship: User1 = 2, User1 = 1 

그런 다음 다음 쿼리를 사용하여 친구를 조회 할 수 있습니다

CREATE TABLE [UserAccount] 
(
    [ID] BIGINT IDENTITY(1,1) PRIMARY KEY, 
    [Name] NVARCHAR(255), 
) 

CREATE TABLE [Friendship] 
(
    [User1] BIGINT, -- Primary key, FK to [UserAccount].[ID] 
    [User2] BIGINT, -- Primary key, FK to [UserAccount].[ID] 
) 

이 당신의 라인을 따라 우정을 표시 할 수 있도록합니다 : 기본적으로 다음과 같이 두 테이블을 원하는

SELECT [F1].[User2] AS [ID] FROM [Friendship] AS [F1] 
WHERE [F1].[User1] = @CurrentUser 
    -- Check for symmetric relationship. 
    AND EXISTS 
     (SELECT 1 FROM [Friendship] AS [F2] 
      WHERE [F2].[User2] = [F1].[User1] AND [F2].[User1] = [F1].[User2]); 

SQL 변형이 지원한다면 TVF (Table Value Function)로 만들 수 있습니다. 다음으로 높은 점수 테이블과 테이블을 만들어 사용자에게 매핑합니다. 이것에 대한

CREATE TABLE [Highscore] 
{ 
    [ID] BIGINT IDENTITY(1,1) PRIMARY KEY, 
    [Score] INT, 
} 

CREATE TABLE [UserHighscore] 
{ 
    [UserID] BIGINT, -- Primary key, FK to User.ID 
    [HighscoreID] BIGINT, -- Primary key, FK to Highscore.ID 
} 

일부 샘플 데이터는 다음과 같습니다

-- In this game you can only score over 9000! 
Highscore: ID = 1, Score = 9001 
Highscore: ID = 2, Score = 9005 
Highscore: ID = 3, Score = 9008 
UserHighscore: UserID = 1, HighscoreID = 1 
UserHighscore: UserID = 1, HighscoreID = 2 
UserHighscore: UserID = 2, HighscoreID = 3 

그런 다음 친구의 최고 기록에 대한 조회 할 수 있습니다

SELECT TOP(10) [U].[Name], [H].[Score] FROM [Friendship] AS [F1] 
LEFT INNER JOIN [User] AS [U] ON [U].[ID] = [F1].[User2] 
LEFT INNER JOIN [HighscoreUser] AS [HU] ON [HU].[UserID] = [F1].[User2] 
LEFT INNER JOIN [Highscore] AS [H] ON [H].[ID] = [HU].[UserID] 
WHERE [F1].[User1] = @CurrentUser 
    -- Check for symmetric relationship. 
    AND EXISTS 
     (SELECT 1 FROM [Friendship] AS [F2] 
      WHERE [F2].[User2] = [F1].[User1] AND [F2].[User1] = [F1].[User2]) 
ORDER BY [H].[Score] DESC; 

즉, 쿼리가 상위 10 친구 점수를 줄 것이다; 그들의 이름과 점수를 알려줍니다.

+0

빠른 답변을 주셔서 감사합니다. 확실히 살펴 보겠습니다. 그러나 호기심에서 : 사용자가 연락처에서 연락처를 추가 할 때이 방법으로 작동합니까? – Blade

+0

@Blade 실제로 응용 프로그램에 달려 있습니다. 사용자의 전화 번호부에 액세스하는 방법을 알아야합니다. 그리고 데이터베이스에서 그들을 찾아서 자동으로 관계를 형성하십시오. (분명히 전화 번호가 먼저 필요합니다) - 이것은 아마도 ** WhatsApp이 어떻게 작동하는지 ** 분명합니다. –

+0

그럼 고맙습니다. 이제 주말에 좋은 시간을 가지며 시간이 충분합니다. ;) – Blade

관련 문제