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系统为每个节点创建一个内部唯一的系统定义的标识符。为了有效地使用节点的其他属性来检索单个节点,用户可以为具有特定标签的节点集合创建索引。