Source: https://dev-docs.yueshu.com.cn/v5.3.2/intro/concepts/ Documentation version: v5.3.2 # 图数据基本概念 一部电影连接着演员、导演和观众。沿着这些关系,可以找到演员参演的电影、合作过的导演,以及这些导演的其他作品。本文以电影数据为例,介绍图数据库如何用点、边和属性组织数据,让这些关系可以被查询。 ## 点、边和属性 - 点表示一个对象,例如一位演员或一部电影。 - 边连接两个点,表示它们之间的关系。边有方向,例如参演关系从演员指向电影。 - 属性由名称和值组成,用于描述点或边的具体信息。电影点的`id`(编号)和`name`(名称)是点的属性;表示观看关系的`Watch`边用`rate`属性记录用户对电影的评分。 下图使用内置的`movie`数据集。圆点表示对象,箭头表示关系;点类型和属性标在圆点旁,评分`rate`标在`Watch`边上。完整的数据模型见[示例数据集](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/dataset/)。 [![电影数据中的点、边和属性](https://docs-cdn.nebula-graph.com.cn/figures/5.0/developer/graph_data_zh_2026-10-16_16-16-21.png)](https://docs-cdn.nebula-graph.com.cn/figures/5.0/developer/graph_data_zh_2026-10-16_16-16-21.png) 电影数据中的点、边和属性(省略部分属性)。 ### 点的标识 本数据集中的每种点类型都使用`id`作为主键,用于标识一个点。在同一张图中: - 同一类型的点不能使用相同的`id`。 - 不同类型的点可以使用相同的`id`。例如,图中的电影和类别都使用`id: 11`。 电影可能同名,因此查询指定电影时通常使用编号。 ## 类型与标签 ### 类型定义结构 类型规定点或边的结构,包括属性名称和数据类型。在本数据集中,`Movie`和`Actor`是点类型,`Act`是边类型。 边类型还规定两端允许连接的点类型,例如`Act`从`Actor`指向`Movie`。 ### 标签用于匹配 如果要查询数据集中的所有人物,需要同时匹配演员、导演和用户这三种点类型。标签是查询时用于匹配点或边的标记,多个类型可以共享一个标签:`Actor`、`Director`和`User`都带有`Person`标签。 下图列出这三种点类型及其属性名称: 共享标签:`Person` `Actor`(演员)`id`, `name`, `birthDate` `Director`(导演)`id`, `name`, `birthDate` `User`(用户)`id` 共享标签的类型可以有不同的属性。`User`只有`id`,而`Actor`还包含`name`和`birthDate`。因此,按`Person`标签查询时,不能假定每个匹配的点都有`name`属性。 ### 按类型或标签查询 在图查询语言(GQL)中,可以按类型或标签匹配点: | 匹配方式 | 写法 | 匹配的点 | 按类型 | `(v@Actor)` | 演员 | 按标签 | `(v:Person)` | 演员、导演和用户 这些写法中: - `(v@Actor)`这样的圆括号写法是点模式,用于描述要匹配的点。 - `@Actor`指定点类型,`:Person`指定标签。 - `v`是点变量,用于在查询的其他位置引用匹配到的点。您可以换用`m`或`person`等名称,但需要同步修改查询中对该变量的所有引用。 更多语法见[点模式](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/patterns/node-patterns/)。 ## 图类型与图 图类型定义一张图允许包含的点类型、边类型和属性。`movie_type`定义了电影数据集使用的结构。 图保存实际的点、边和属性值。`movie`图使用`movie_type`,其中的数据需符合该图类型的定义。 图类型:`movie_type` `Movie`点类型定义 - `id: INT` - `name: STRING` →图:`movie` 一个`Movie`点 - `id: 11` - `name: Star Wars: A New Hope` 图类型规定图中允许保存的数据结构。此处仅展示部分定义和数据。 `movie`是图名,`Movie`是图中的一种点类型名,名称区分大小写。 ## Schema Schema 是组织图类型和图的命名空间,类似数据库内的目录。每个 Schema 都有自己的路径。 系统会自动创建`/default_schema`。快速开始中的`movie_type`和`movie`都创建在这个 Schema 中,无需为教程另建 Schema。 ## 会话与工作图 会话保存多次查询之间的上下文,包括当前使用的 Schema 和工作图。在默认配置下,新会话使用`/default_schema`。未指定其他路径时,图类型和图都会在当前会话的 Schema 中创建或查找。 工作图是查询要访问的图。加载数据后仍需指定工作图:加载`movie`数据集会创建图并写入数据,但不会将其选为工作图。 执行`MATCH`等访问图数据的查询前,可以为会话设置工作图,也可以在查询开头用`USE`指定图: | 设置方式 | 写法 | 生效范围 | 会话设置 | `SESSION SET GRAPH movie` | 当前会话的后续查询 | 查询内指定 | `USE movie` | 仅当前查询 查询内指定的图优先于会话设置,且不会改变会话的工作图。 两种方式的完整示例见[选择图并查询电影](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/first-query/#select-graph)。 重新连接或切换客户端并新建会话后,需要再次指定图才能查询其中的数据。已有数据可继续使用,无需因重新连接而重新加载。 ## 概念对照 | 类别 | 用途 | 概念 | 数据 | 保存实际对象、关系和具体值 | 图、点、边、属性值 | 结构 | 定义图中允许保存的数据结构 | 点类型、边类型、图类型、属性定义 | 查询 | 匹配和引用数据 | 标签、点变量、模式 | 会话 | 定位并选择查询要访问的图 | 当前 Schema、工作图 ## 下一步 按[连接并完成首次查询](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/first-query/#load)加载`movie`示例数据集,并查询电影及其演员。