Neo4j 中的数据模型使用节点和关系的概念来组织数据。节点和关系都可以具有属性,这些属性存储与节点和关系关联的数据项。
节点可以有标签:
- 一个节点可以有零个、一个或多个标签。
- 具有相同标签的节点被分组到一个集合中,该集合标识数据库图中节点的子集以供查询。
关系是有向的,每个关系都有一个开始节点和结束节点以及一个关系类型,它通过识别具有相同关系类型的相似关系来起到与节点标签相似的作用,可以通过映射模式指定属性,即由一个或多个用大括号括起来的“名称:值”对组成。
示例: (Lname:’Sharma’,Fname:’Nitin’,Minit:’B’)。
Neo4j图数据模型类似于传统图理论中数据在 ER 和 EER模型中的表示方式。
在 Neo4j 中创建节点:为公司创建节点:
CREATE (e1: EMPLOYEE, {Empid: ‘1’, Lname: ‘Sharma’, Fname: ‘Nitin’, Minit: ‘B’})
CREATE (e2: EMPLOYEE, {Empid: ‘2’, Lname: ‘Rao’. Fname: ‘Rupesh’})
CREATE (e3: EMPLOYEE, {Empid: ‘3’, Lname: ‘Dave’, Fname: ‘Gopal’))
CREATE (e4: EMPLOYEE, {Empid: ‘4’, Lname: ‘Ojha’, Fname: ‘Baibhav’, Minit: ‘S’})
CREATE (d1: DEPARTMENT, {Dno: ‘1’, Dname: ‘Business’})
CREATE (d2: DEPARTMENT. {Dno: ‘2’, Dname: ‘Developer’))
CREATE (p1: PROJECT, {Pno: ‘8’, Pname: ‘WebDev’})
CREATE (p2: PROJECT, {PNo: ‘2’, Pname: ‘AppDev’))
CREATE (p3: PROJECT, {Pno: ‘5’, Pnarne: ‘APIDev’})
CREATE (loc1: LOCATION, {Name: ‘Noida’})
CREATE (loc2: LOCATION, {Name: ‘Hyderabad’})
CREATE (loc3: LOCATION, {Name: ‘Bengaluru’})
CREATE (loc4: LOCATION, {Name: ‘Chennai’})
在 Neo4j 中创建关系:为公司创建关系:
CREATE (e1)- [: WorksFor]-> (d1)
CREATE (e3)- [: WorksFor]-> (d2)
CREATE (d1)- [: Manager ] -> (e2)
CREATE (d2)- [: Manager ] -> (e4)
CREATE (d1)- [: LocatedIn ]-> (loc1)
CREATE (d1)- [: LocatedIn ]-> (loc3)
CREATE (d1)- [: LocatedIn ]-> (loc4)
CREATE (d2)- [: LocatedIn ]-> (loc2)
CREATE (e1)- [: WorksOn, {Hours: ‘28.5’}] -> (p1)
CREATE (e1)- [: WorksOn, {Hours: ‘7.5’}] -> (p2)
CREATE (e2)- [: WorksOn, {Hours: ‘15.0’}] -> (p1)
CREATE (e2)- [: WorksOn, {Hours: ‘15.0’}] -> (p2)
CREATE (e2)- [: WorksOn, {Hours: ‘10.0’}] -> (p3)
CREATE (e2) -[: WorksOn, {Hours: ‘10.0’}] -> (p2)
Neo4j 数据模型的特点:
- 标签和属性:可以在创建节点时声明/指定节点标签。
- 也可以创建没有任何标签的节点。
- 关系和关系类型: “ -> ”指定关系的方向。
- 可以在任一方向上遍历该关系。
- 路径:路径指定了图的一部分的遍历。通常,它用作查询的一部分来指定模式,其中查询将从与模式匹配的图形数据中检索。
- 路径通常由一个起始节点指定,后跟一个或多个关系,通向一个或多个满足该模式的结束节点。
- 可选架构:可以在没有架构的情况下创建和使用图形(可选)。
- 与模式创建相关的主要功能包括基于标签和属性创建索引和约束。
- 索引和节点标识符: Neo4j系统在创建节点时为每个节点创建一个内部唯一的系统定义标识符。为了有效地使用节点的其他属性检索单个节点,用户可以为具有特定标签的节点集合创建索引。