如果您曾经使用过对象模型或实体关系图,则带标签的属性图模型看起来会很熟悉。
图数据建模是用户将任意域描述为节点的连接图以及与属性和标签的关系的过程。Neo4j图形数据模型旨在以Cypher查询返回子图,并通过为图数据库组织数据结构来解决业务和技术问题。
图数据模型通常被称为“白板友好型”。通常,在设计传统的数据模型时,人们在白板上绘制示例数据,并将其与绘制的其他数据连接以显示不同项目之间的连接方式。然后,将白板模型重新格式化并进行结构化,以适合关系模型的标准化表格。
图据建模的过程与此类似。但是,图数据模型并不修改数据模型以适合规范化的表格结构,而是完全保留在白板上绘制的状态。这就是图数据模型因“对白板友好”而得名的原因。
让我们看一个例子来证明这一点。在下面的白板图中,我们有关于电影“黑客帝国”的数据集。
白板模型
接下来,我们对实体进行形式化并匹配关系类型的语法,以创建属性图模型的节点/关系视图。
属性图模型的节点和关系
下一步,我们添加标签并确定节点的属性以及属性图模型的关系。
添加标签和属性
最后,我们可以在Neo4j中查看此数据模型,并确保它与我们在白板上绘制的内容匹配。另外,请注意它与我们最初设计的白板模型几乎相同。
Neo4j存储的数据模型
轻松白板数据模型的功能使图数据模型非常简单和直观。无需草拟业务模型版本或向业务用户解释ERD术语。相反,任何人都可以轻松理解图数据模型。
为了更好地理解并设计图数据模型,让我们以一少量数据为例,逐步介绍如何创建图数据模型的过程。首先考虑以下场景,该场景描述了示例数据实体和关系。
场景:
两个人:John和Sally,朋友关系,John和Sally 都已阅读:《图数据库》。
通过将组件标识为标签、节点和关系,我们可以使用此语句中的信息来构建模型。让我们将场景分为几部分,并将其定义为属性图模型的一部分。
属性图元素
从场景提取的第一个实体是节点。节点是形成图的两个基本单位之一(另一个基本单位是关系)。
节点通常用于表示实体,但也可以表示其他组件,具体取决于实例。节点可以包含name-value数据的属性,可以使用一个或多个标签为节点分配角色或类型。
通常可以通过识别场景中的名词来找到图模型的节点。可以将诸如汽车、个人、客户、公司、资产等实体定义为节点。
我们可以将节点标识为具有唯一概念标识的实体。在我们的场景中,我们从Sally和John开始,以下这些实体以粗体显示。
场景–定义节点:
两个人:John和Sally,朋友关系,John和Sally 都已阅读:《图数据库》。
提取节点:
* John
* Sally
* 《图数据库》
请记住,图数据库将实体的每个实例作为一个单独的节点(即使John和Sally都是people,他们都是两个单独的节点),而《图数据库》则与另一本书是单独的节点。
转载自知乎