我是Neo4J和图形数据库的新手,因此我对构建关系有一些疑问。我在这个项目中使用Neomodel。
我有两个独立的数据模型文件(请注意,我在使用Neo4J与Postgres进行实验时使用的是nodes.py而不是models.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')
我不确定我是否根据最佳实践配置了关系(我知道当前代码是多余的。)是否有必要在两个节点类上都有RelationshipTo和RelationshipFrom属性?或者从所有者节点(用户)到拥有节点(Campaign)的RelationshipTo是否足够?
或者,如果Campaign与User之间存在单独的RelationshipTo属性:
user = RelationshipTo('accounts.nodes.User', 'OWNED_BY')
我不确定这是否是一个重大问题,但任何指导或提示都将不胜感激!
答案 0 :(得分:3)
只有当您想从双方访问时,才需要在每一侧都有一个定义。即如果您只想从广告系列对象中调用campaign.user.single()
但不关心访问用户广告系列,那么您就不需要在User类上定义。
通常我发现最好在双方定义一个关系,因为对于模式新手来说,更容易理解它的结构。两个定义应该是相同的类型,因此OWNS_BY将返回一组不同的关系。这些类型的命名完全取决于你,但大写似乎是惯例,
希望这有帮助,如果您有任何其他问题,请随时在github上给我发消息,
干杯,
罗布