在图数据库中,最重要的部分就是关系。

根据属性图模型,关系应该是定向的。 否则,Neo4j将抛出一个错误消息。

基于方向性,Neo4j关系被分为两种主要类型

单向关系

双向关系

但是,在Neo4j中,关系只能是单向箭头,如果想要表示双向关系,我们可以头尾节点调换位置再CREATE一个关系。

一、关系创建大致可以分为以下几种:

  • 在两个现有的节点之间创建无属性的关系
  • 在两个现有的节点之间创建有属性的关系
  • 在两个新节点之间创建无属性的关系
  • 在两个新节点之间创建有属性的关系
  • 在具有WHERE子句的两个退出节点之间创建/不使用属性的关系

第一种情况:

我们使用CQL MATCH命令检索现有的两个节点和CQL CREATE命令,以创建它们之间的新关系。
MATCH (e:Customer),(cc:CreditCard) 
CREATE (e)-[r:DO_SHOPPING_WITH ]->(cc)

这里关系名称为“DO_SHOPPING_WITH”

关系标签为“r”。

e和Customer分别是客户节点的节点名称和节点标签名称。

cc和CreditCard分别是CreditCard节点的节点名和节点标签名。

结果如下:

使用neo4j关系型数据库建模 neo4j建立关系_使用neo4j关系型数据库建模

第二种情况:

我们使用CQL MATCH命令检索现有的两个节点和CQL CREATE命令,以创建它们之间的新关系以及关系的属性。
MATCH (cust:Customer),(cc:CreditCard) 
CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc) 
RETURN r

这里关系名称为“DO_SHOPPING_WITH”

关系标签为“r”。

shopdate和price是关系“r”的属性。

由于我添加了return r,这里就返回了关系的属性:

使用neo4j关系型数据库建模 neo4j建立关系_图数据库_02

第三种情况:

我们直接使用Pattern语法进行新节点,新关系的创建。

CREATE (fb1:FaceBookProfile1)-[like:LIKES]->(fb2:FaceBookProfile2)

这样就一次性创建了两个节点和一个关系

使用neo4j关系型数据库建模 neo4j建立关系_大数据_03

得到的结果如下:

由于这里的节点和关系都是没有属性的,所以显示出来默认是id

第四种情况

创建方式与上面一样,这里就直接给出例子。

CREATE (video1:YoutubeVideo1{title:"Action Movie1",updated_by:"Abc",uploaded_date:"10/10/2010"})
-[movie:ACTION_MOVIES{rating:1}]->
(video2:YoutubeVideo2{title:"Action Movie2",updated_by:"Xyz",uploaded_date:"12/12/2012"})

这里的关系名称是“ACTION_MOVIES”

关系标签是“电影”。

video1和YoutubeVideo1分别是“From Node”的节点名和节点标签名。

video2和YoutubeVideo2分别是“To Node”的节点名和节点标签名。

使用neo4j关系型数据库建模 neo4j建立关系_Neo4j_04

再看下面:

这就代表我们创建的属性,以表格的形式展现。

使用neo4j关系型数据库建模 neo4j建立关系_使用neo4j关系型数据库建模_05

第五种情况我在此就不做介绍,大家可以去w3cschool上面自行学习,另外官方文档也非常好。

学习资料

w3c的链接:https://www.w3cschool.cn/neo4j/? 官方文档的链接:https://neo4j.com/docs/