2.3.2 关系
关系(Relationship)同样是图数据库中的基本元素。节点需要连接起来才能构成图。关系就是用来连接两个节点的,关系又称为图论的边(Edge),其始端和末端都必须是节点,关系不能指向空也不能从空发起。关系和节点一样可以包含多个属性,但关系只能有一个类型(Type),如图2-43所示。一个节点可以被多个关系指向或作为关系的起始节点,图2-44展示了多个关系指向同一节点。

图2-43 带有类型和属性的关系

图2-44 多个关系指向同一节点
关系必须有起始节点(Start Node)和结束节点(End Node),两头都不能为空,如图2-45所示。
节点可以被关系串联或并联起来,如图2-46、图2-47所示。由于关系可以是有方向的,所以可在由节点、关系组成的图中进行遍历操作。

图2-45 关系的起始节点和结束节点

图2-46 关系串联节点
在图的遍历操作中,我们可以指定关系遍历的方向或者指定为无方向,因此在创建关系时不必为两个节点创建相互指向的关系,而是在遍历时不指定遍历方向即可。
特别注意一个节点可以存在指向自己的关系,如图2-48所示。

图2-47 关系并联节点

图2-48 关系的起始节点、结束节点为同一节点