2015-02-04 4 views
1

내 컬렉션 시나리오는 다음과 같습니다. 사용자 A는 다른 사용자를 차단할 수 있으며 다른 사용자는 사용자 A를 차단할 수 있습니다. 하지만 내 질문에 사용자 클래스를 디자인하는 방법입니다.mongodb 컬렉션을 디자인하는 방법

모든 차단 된 사용자를 일종의 목록에 넣거나 Block 클래스를 User 클래스에 포함하기 만하면됩니다.

가능한 솔루션 :

public class User 
{ 

String id; 
    String username; 
String password; 
String email; 
List<User> blockedUserEmails; 
//getter and setters 
} 

또는

public class User 
{ 

String id; 
String username; 
String password; 
String email; 
//getter and setters 

List<String> blockedUserEmailsInAList; 
} 

또는 클래스의

public class User 
    { 

String id; 
String username; 
String password; 
String email; 

@Embedded 
List<Blockee> blockedUserId; 

//getter and setters 
} 

어느 하나는 제안에 가장 적합합니다?

도움에 감사드립니다.

업데이트

사용자 A가 사용자 B 좋아하지 않는, 그래서 C와 같은 그룹에있을 것입니다 및 그룹에서 그들을 차단할 수 있습니다. 아마도 사용자 B는 사용자 a가 서로를 차단할 수 있도록 동일한 그룹을 원하지 않을 수도 있습니다. 가능한 사용자 및 그룹 목록을 표시 할 때 서로 보이지 않게되며 예를 들어 사용자 A는 사용자 B 또는 부사를 선택할 수 없습니다.

+0

"최고"라는 표준이 무엇입니까? –

+0

나는 단지 500 명의 사용자와 잘 작동하는 해결책이 필요하다. (스프링 MVC 사용) – user1067665

+0

"잘 작동합니까?" * 당신에게 좋은 해결책인지 * 나쁜 해결책이 될지 알려주세요. –

답변

1

사용자는 차단 한 사용자의 ID 목록을 가져야합니다. 따라서 최소한의 정보로 차단 된 사용자를 식별 할 수 있고 중복 정보가 일치하지 않을까 걱정할 필요가 없습니다.

전체 사용자를 포함 시키면 포함 된 차단 된 사용자에게 사용자가 포함될 수 있기 때문에 재귀 적 폭발로 이어질 수 있습니다.

public class User { 
    String id; 
    String username; 
    String password; 
    String email; 
    List<String> blockedUserIds; 
    //getter and setters 
} 
+0

답변 해 주셔서 감사합니다. – user1067665

관련 문제