Neo4j数据模型设计

简介: 数据模型设计是数据建模的第一步,因为Neo4j不需要模式结构定义,所以使用简单框图就可以为一个项目或应用设计数据模型。创建数据模型之后,就可以使用SDN进行数据实体建模和一些数据访问的设计。 本文选自《Neo4j全栈开发》。

  开始数据模型设计,一般通过分析业务需求就可以提取出需要建立的节点和关系,然后使用节点和关系画出框图,即可完成数据模型的设计。下面通过两个实例来简要说明数据模型的设计过程。

用户访问控制数据模型

  在一个访问控制系统中,它的业务需求可以简单地描述为:怎样控制一个用户的访问权限。即一个用户登录系统后,他对系统的哪些资源具有访问权限。通过分析和结合以往的经验,我们可能需要四个节点,分别是用户、部门、角色和资源;三个关系,分别是隶属、拥有和权限。这样,我们就可以画出下图的用户访问控制数据模型。
             图片描述
  这个数据模型是否合理、是否符合业务需求?我们可以用这个简单框图模拟一下业务流程,简单地测试一下它的合理性。首先看看从这个框图中能不能读出类似这样的信息:隶属于一个部门的一个用户拥有哪些角色就能对哪些资源具有访问权限。如果可以,就可以说明这个模型设计是可行的。
  很明显,这个数据模型设计的业务流程是通顺的。因为对于这个框图,我们可以这样读出它的流程:部门具有一些隶属用户,用户拥有一些角色,角色对一些资源具有访问权限。
  有了这个数据模型之后,就可以对节点和关系进行建模了。在建模中再来确定节点和关系的属性,例如,用户节点可能需要用户名、密码、性别、邮箱、创建日期等属性,同时还要确定关系的对等方式,例如,是一对一、一对多还是多对多等。对于这个实例来说,用户与部门的隶属关系是多对一关系,用户与角色的拥有关系和角色与资源的权限关系都是多对多关系。

购物网站数据模型

  如果觉得上面的数据模型简单了一点,那么接下来我们使用一个业务需求比较复杂的实例来试一试,比如一个购物网站。购物网站的业务需求大概具有这样的流程:首先商家上架了商品,然后顾客浏览或查找商品,顾客找到自己需要的商品之后,确定购买,接着使用他的账户支付款项,商家收到货款后,将商品快递给顾客,从而完成一笔交易。根据这个业务流程,我们画出下图的数据模型。
            图片描述
  使用这个数据模型,我们同样也可以先测试一下,即看一看它能不能通顺地读出一个购物网站的基本流程。比如完成一个完整的购物流程,首先是商家的库存要上架商品,然后是顾客购买商品,即商品出售形成订单;接下来是顾客结算订单,使用账户付款,形成支付记录,同时商家账户收到款项,并且订单进入发货状态,同时生成物流记录;这时候,商家的库存办理商品出库,这样商品就通过快递进入送货过程之中;最后顾客从收货地址收到商品,并对订单执行确认收货操作,同时对商品进行评价,至此完成一次购物流程。这就可以说明,这个数据模型所表现的业务流程是通顺的,所以它的设计是合理的。
  一般的购物网站还有购物车这一项,以满足顾客一次选购多个商品的需求,所以还必须设计一个购物车,即在上述流程中插入一个挑选商品到购物车的过程。其中购物车只是顾客与商品的一个关联关系。
           图片描述
  这下应该很完整了吧?这个模型的整个流程可以通过数据库来表示。下图是一个网上书店的模拟数据。
           图片描述
  其中“顾客1”挑选了两本书到他的购物车中,“顾客2”购买了一本小说,完成了一个完整的购物流程。
  不过,如果再仔细想想,则可能会发现,上面的流程还需要更多的细化。比如,上面的数据模型虽然可以表现一个正常交易的流程,但是如果出现不正常的交易情况,那这个数据模型就走不通了。例如,顾客下单后,有可能又不要了,所以,这就需要有撤销订单流程。又如,顾客收到商品之后,可能因为质量问题需要退货和退款,所以,还需要增加相应的退货和退款处理流程。另外,商家售卖的一种商品中还有可能具有型号、颜色、价格和库存数量等不同分类,所以,对于商品节点还有必要进行细分。
  不难看出,对上面的数据模型还必须再进行加工和细化。当然,除了这些,还可能有其他各种各样的情况。不过,不管是什么情况,都可以通过简单框图对数据模型进行细化和加工。至于最终怎么建立起一个完整的购物网站数据模型,这里就不再深入探索了。
  本文选自《Neo4j全栈开发》,点此链接可在博文视点官网查看此书。
                      图片描述
  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                         图片描述

相关文章
|
6月前
|
存储 NoSQL 数据库
数据模型
一、数据模型 数据模型是用于描述现实世界中各种实体、属性和实体之间关系的一种抽象表示方法。它是在计算机系统中对数据进行组织和管理的基础,用于定义数据的结构、约束和操作。 数据模型可以分为以下几种类型: 1. 层次模型:层次模型是一种树状结构的数据模型,其中数据以层次结构进行组织。每个节点可以有多个子节点,但只能有一个父节点。典型的层次模型是树形数据库。 2. 网状模型:网状模型是一种复杂的数据模型,其中数据之间可以有多对多的关系。网状模型使用指针来表示数据之间的关系,典型的网状模型是CODASYL数据库。 3. 关系模型:关系模型是一种基于关系代数的数据模型,其中数据以表的形式进行组织。关系模
56 0
|
6月前
|
存储 数据采集 数据挖掘
带有ODS的体系结构中数据仓库的设计方法
带有ODS的体系结构中数据仓库的设计方法
|
3月前
|
存储 大数据 数据管理
数据模型设计
数据模型设计
|
存储 NoSQL
使用Neo4j进行关系挖掘实践
基于企业和老板的关系数据,使用Neo4j进行关系挖掘实践
使用Neo4j进行关系挖掘实践
|
存储 NoSQL 关系型数据库
利用聚合概念指导MongoDB的Schema设计
利用聚合概念指导MongoDB的Schema设计
利用聚合概念指导MongoDB的Schema设计
|
前端开发 JavaScript
【组件封装】基于neo4jD3封装关系图、关联图谱
【组件封装】基于neo4jD3封装关系图、关联图谱
【组件封装】基于neo4jD3封装关系图、关联图谱
|
算法 搜索推荐
Neo4j-APOC扩展与使用(下)
Neo4j-APOC扩展与使用 1.APOC简介与安装 1.1 APOC简介 1.2安装APOC
Neo4j-APOC扩展与使用(下)
|
XML JSON 算法
Neo4j-APOC扩展与使用(上)
Neo4j-APOC扩展与使用 1.APOC简介与安装 1.1 APOC简介 1.2安装APOC
Neo4j-APOC扩展与使用(上)
|
搜索推荐 容灾 Java
数据模型 | 学习笔记
快速学习数据模型。
66 0
数据模型 | 学习笔记
|
NoSQL 数据库 数据安全/隐私保护
Neo4j图数据库的安装与基本增删改查
Neo4j图数据库的安装与基本增删改查
217 0
Neo4j图数据库的安装与基本增删改查