Neo4j数据模型设计

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

用户访问控制数据模型

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

购物网站数据模型

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

时间: 2024-10-10 07:56:56

Neo4j数据模型设计的相关文章

Cassandra数据模型设计最佳实践(一)

本文是Cassandra数据模型设计第一篇(全两篇),该系列文章包含了eBay使用Cassandra数据模型设 计的一些实践.其中一些最佳实践我们是通过社区学到的,有些对我们来说也是新知识,还有一些仍然 具有争议性,可能在要通过进一步的实践才能从中获益. 本文中,我将会讲解一些基本的实践以 及一个详细的例子.即使你不了解Cassandra,也应该能理解下面大多数内容. 说说Cassandra在 ebay的使用情况 我们尝试使用Cassandra已经超过1年时间了.Cassandra现在正在服务一

数据平台维度模型设计十个技巧

注:这是一篇讲述维度数据模型设计的文章,偏向于数据平台而非数据分析,请读者根据自己的兴趣爱好阅读,内容有不妥的地方请联系我(松子). 了解过数据仓库历史的人都知道Bill Inmon. Ralph Kimball. Bill Inmon 代表作<Building the Data WareHouse> , Ralph Kimball代表作为 <The Data Warehouse Toolkit>.<The data Warehouse lifecycle>.两位大师对

建设大数据平台,从“治理”数据谈起

本文是大数据杂谈 6 月 15 日分享内容整理. 一.大数据时代还需要数据治理吗? 数据平台发展过程中随处可见的数据问题 大数据不是凭空而来,1981 年第一个数据仓库诞生,到现在已经有了近 40 年的历史,相对数据仓库来说我还是个年轻人.而国内企业数据平台的建设大概从 90 年代末就开始了,从第一代架构出现到现在已经经历了近 20 年的时间. 在这 20 年的时间里,国内数据平台实施者可以说是受尽折磨,数据项目一直不受待见,是出了名的脏活累活. 可以说,忽视数据治理给数据平台建设带来了不少问题

大数据独角兽Palantir之核心技术探秘

1.Palantir源起:B2B大数据和企业级Google. Palantir(中文名帕兰提尔,源于<指环王>中可穿越时空.洞悉世间一切的水晶球Palantír)被誉为硅谷最神秘的大数据独角兽企业,短短几年内跻身百亿俱乐部,成为全球最高估值排名第四的初创公司.它的主要客户只在美剧和好莱坞里出现,如美国联邦调查局(FBI).美国中央情报局(CIA).美国国家安全局(NSA).美国军队和各级反恐机构,当然还有如JPMorgan这样的华尔街金融大鳄等等.关于Palantir的传奇故事很多,CIA通过

大数据资产管理实战

本文讲的是大数据资产管理实战,本次分享包括大数据资产管理的概述.方法论和实施效果三个部分的内容. · · · 第一部分:大数据资产管理概述 提到企业数字化转型,不得不提现在的一个主流观点:未来的企业必将成为数字化企业,每个公司都将会成为软件公司!未来企业增长和竞争的能力越来越取决于其数字化创新能力.为了应对企业数字化转型,企业IT架构采用分布式.微服务.移动化.大数据等技术来应对业务变化带来的挑战. 那么在业务敏捷变革.应用快速创新的前提下,企业的大数据需要能够准确反映出企业的业务情况,进而需要

DTBoost:全新一代企业级大数据应用模式揭秘

新一代企业级大数据应用模式 三个问题 当下是否还需要一个复杂的EDW(企业级数据仓库)? 数据系统的目标用户是谁? 让数据适应计算能力还是计算跟着数据走? 数据仓库这个概念在二十多年前由Bill Inmon提出后,几乎所有的IT厂商都开始介入这个领域,为企业级数据仓库设计非常复杂的体系结构和数据模型,典型的企业级数据应用架构如下: 这个架构,层次结构非常清晰,但是链路非常长,导致数据冗余非常大,同时数据表结构关系复杂,是一个典型的给技术人员使用的模型,业务的同学要使用数据是非常难的,没法理解底层

日均十亿级别的数据如何做到秒导、秒查?

讲师介绍  曹犟神策数据CTO  曾就职于百度,拥有数据收集.传输.建模.海量处理.分析.应用等实践经验,曾任极路由数据总监.   很多朋友想知道神策分析是如何实现在每天十亿级别数据的情况下能做到秒级导入和秒级查询,以及如何做到不需要预先指定指标和维度就能实现多维查询的.今天借此分享的机会,和大家交流一下我们的技术选型与具体的架构实现,希望能够对大家有所启发.   当然,脱离客户需求谈产品设计,不太现实:而脱离产品设计,纯粹谈技术选型与架构实现,也不现实.因此,我们首先会简要概述:   神策分析

从数据仓库到大数据,数据平台这25年是怎样进化的?

" 从「数据仓库」一词到现在的「大数据」,中间经历了太多的知识.架构模式的演进与变革.数据平台这25年究竟是怎样进化的? 我是从2000年开始接触数据仓库,大约08年开始进入互联网行业.很多从传统企业数据平台转到互联网同学是否有感觉:非互联网企业.互联网企业的数据平台所面向用户群体是不同的. 那么,这两类的数据平台的建设.使用用户又有变化?数据模型设计又有什么不同呢? 我们先从两张图来看用户群体的区别. 用户群体之非互联网数据平台用户  企业的boss.运营的需求主要是依赖于报表.商业智能团队的

DB2面向OLTP环境的物理数据库设计:数据建模

收集需求并创建逻辑模型,这是良好的物理数据库设计的关键. 数据建模的第一步是收集需求.该步骤涉及识别需要维护的关键业务工件.数据和信息.这些业务工件被称为实体.对于http://www.aliyun.com/zixun/aggregation/7976.html">在线购物目录,有关客户.产品和定价的信息都是业务关键信息,即实体. 可以通过利益相关者的输入来收集需求.需求和数据模型通过迭代方式向对方输送数据而得到进一步完善,从而创建一个逻辑模型. 图 1 显示了迭代数据建模范例: 收集需求