请教Label设计问题:多个label还是一个label多个属性
发布于 5 年前 作者 waitingforwind 3308 次浏览 来自 问答

我现在有客户名单、黑名单、客户等级名单(金银铜牌客户)。 我应该怎么设计这三个的关系呢?是每个名单分别设计一个Label? 还是将客户名单世纪城一个label,然后将黑名单、客户等级名单(金银铜牌客户)作为属性放到每个node上去?

刚刚接触Neo4J,很多设计方便的问题概念不清晰,请教各位前辈,谢谢。

2 回复

我倾向于黑名单作为label,客户等级作为属性,因为等级这个应该所有客户都有吧,黑名单作为label的话写查询稍微方便一些,但黑名单作为属性存下来建好索引的话效率也不差

嗯,两种方式从实现上没有太本质的区别。作为标签的好处是:

  • 标签自动会建索引
  • 语义上更加容易理解,例如:
    • MATCH (n:客户) … SET n:黑名单 // 如果n满足特定条件
    • MATCH (a:黑名单) -[*…3]-> (b) RETURN b *
  • 如果拥有不同标签的节点需要不同属性,使用标签更方便。例如:客户可以有3个属性,如果被打上黑名单的客户,再增加2个属性。在写查询时: // 客户拥有的属性 MATCH (a:客户) WHERE a.prop … // 黑名单客户拥有更多属性 MATCH (b:黑名单客户) WHERE b.prop3 …

欢迎讨论!

回到顶部