2014-12-01 2 views

답변

0

유스 케이스 관계가 순환 참조를 허용한다는 간단한 이유 때문에 상위 관계를 사용할 수 없습니다 (나는 따라와, 따라와).

해결책은 예상되는 사용 패턴에 따라 다릅니다. 두 가지 옵션 중에서 선택할 수 있습니다 :

(A) 각 사용자 엔티티에이 사용자가 따르는 다른 사용자의 ID 목록을 저장하십시오.

(B) "User"와 "Follower"의 두 가지 속성이있는 별도의 엔터티를 만듭니다. 모든 엔티티는 사용자간에 단일 "연결"을 나타냅니다.

첫 번째 옵션은 더 단순 해 보이지만 exploding indexes 문제가 발생할 수 있습니다. 게다가 사용자 관계의 각 변경 사항이 다른 모든 색인에 대한 업데이트로 사용자 엔티티를 덮어 써야하므로 더 비싼 솔루션으로 판명 될 수 있습니다. 두 번째 솔루션에는 이러한 단점이 없지만 약간의 코드가 필요할 수 있습니다.

+0

안녕하세요. 실제로 순환 참조가 없습니다. 어쩌면 나의 원래 묘사는 나의 구조가 초대 나무 같이 더 많은 것을 언급 했음에 틀림 없다. 그래서 한 사람이 맨 위에 있습니다. 그 나무를 위아래로 탐색 할 수 있어야하며 이론 상으로는 수십만 명의 자녀와 자녀 관계 등이있을 수 있습니다. – bradley

+0

트리가 깊은 경우 순환 참조를 어떻게 방지합니까? 두 경우 모두 하나의 엔티티 그룹에있는 엄청난 수의 엔티티와 조상 관계를 사용하려고하면 데이터를 전혀 업데이트 할 수 없습니다. –

+0

초대장입니다. 이미 초대 된 사람은 초대 할 수 없습니다. 최상위 레벨에서 "사용자 1"이 초대 한 사용자 목록을 가져와야하며 그 목록에서 초대 한 사용자를 얻는 등의 작업을 수행해야합니다. 그래서 "사용자 1"이 2 명을 초대했고 그 두 명이 2 명 더 초대 한 경우 사용자 1이 가입 한 모든 8 명을 검색 할 수 있어야합니다. – bradley

관련 문제