3

一般来说,我是 Neo4J 和图形数据库的新手,所以我对构建关系有一些疑问。我在这个项目中使用Neomodel

我有两个单独的数据模型文件(请注意,当我尝试使用 Neo4J 与 Postgres 时,我使用的是 nodes.py 而不是 models.py)

帐户 > 节点.py

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

活动 > 节点.py

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

我不确定我是否根据最佳实践配置了关系(我知道当前代码是多余的。)是否需要在两个节点类上都有 RelationshipTo 和 RelationshipFrom 属性?或者从所有者节点(用户)到拥有节点(活动)的RelationshipTo是否足够?

或者是否应该有一个从 Campaign 到 User 的单独的 RelationshipTo 属性:

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

我不确定这是否是一个重大问题,但任何指导或提示将不胜感激!

4

1 回答 1

3

仅当您想从两侧访问它时,您才需要在每一侧进行定义。即,如果您只希望能够campaign.user.single()从您的活动对象调用但不关心访问用户活动,那么您不需要对您的用户类进行定义。

一般来说,我发现最好定义双方的关系,因为它更容易让刚接触你架构的人更容易理解它的结构。两个定义应该是相同的类型,所以 OWNS_BY 会返回一组不同的关系。这些类型的命名完全取决于您,但大写似乎是惯例,

希望对您有所帮助,如果您有任何其他问题,请随时在 github 上给我发消息,

干杯,

于 2014-11-03T09:17:21.813 回答