2014-11-02 5 views
1

저는 Neo4J와 그래프 데이터베이스를 처음 접해 왔기 때문에 관계를 구조화하는 것에 대해 몇 가지 질문이 있습니다. 이 프로젝트에 Neomodel을 사용하고 있습니다.Neomodel relationships

나는 두 개의 별도의 데이터 모델 파일 (I 대신 내가 포스트 그레스 대 Neo4J 실험으로 models.py의 nodes.py 사용하고 있습니다)가

계정> nodes.py

class User(StructuredNode): 
    firstName = StringProperty() 
    lastName = StringProperty() 
    email = StringProperty() 
    active = BooleanProperty() 
    campaigns = RelationshipTo('campaigns.nodes.Campaign', 'OWNS') 

캠페인> nodes.py

class Campaign(StructuredNode): 
    name = StringProperty() 
    campaignId = IntegerProperty() 
    active = BooleanProperty() 
    user = RelationshipFrom('accounts.nodes.User', 'OWNS') 

나는 C를 가지고 있지 확신 모범 사례에 따라 관계를 구성했습니다 (현재 코드가 중복됨을 알고 있습니다.) 두 노드 클래스 모두에서 RelationshipTo 및 RelationshipFrom 속성이 있어야합니까? 또는 소유자 노드 (사용자)에서 소유 노드 (캠페인)까지 RelationshipTo가 충분합니까?

또는 캠페인에서 사용하기 위해 별도의 RelationshipTo 특성이 있어야한다 :이도 중요한 문제이지만, 어떤 지침이나 팁을 크게 감상 할 수있는 경우

user = RelationshipTo('accounts.nodes.User', 'OWNED_BY') 

잘 모르겠어요!

답변

1

양면에서 액세스하려는 경우에만 각면의 정의가 필요합니다. 즉, 캠페인 개체에서 campaign.user.single()으로 전화를 걸 수 있지만 사용자 캠페인에 액세스하는 것에 신경 쓰지 않는다면 사용자 클래스에 대한 정의가 필요하지 않습니다.

일반적으로 스키마에 익숙하지 않은 사용자가 구조를 이해하기 쉽도록 양쪽 측면에 관계를 정의하는 것이 가장 좋습니다. 두 정의 모두 동일한 유형이어야하므로 OWNS_BY는 다른 관계 집합을 반환합니다. 이러한 유형의 이름은, 그러나 대문자 국제 대회가 될 것으로 보인다 전적으로 당신에게 달려이 추가 문의 사항이있는 경우, GitHub의에 메시지 나에게 주시기 도움이

희망,

건배입니다

Rob