閱讀998 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Neo4j數據模型設計

  開始數據模型設計,一般通過分析業務需求就可以提取出需要建立的節點和關係,然後使用節點和關係畫出框圖,即可完成數據模型的設計。下麵通過兩個實例來簡要說明數據模型的設計過程。

用戶訪問控製數據模型

  在一個訪問控製係統中,它的業務需求可以簡單地描述為:怎樣控製一個用戶的訪問權限。即一個用戶登錄係統後,他對係統的哪些資源具有訪問權限。通過分析和結合以往的經驗,我們可能需要四個節點,分別是用戶、部門、角色和資源;三個關係,分別是隸屬、擁有和權限。這樣,我們就可以畫出下圖的用戶訪問控製數據模型。
             圖片描述
  這個數據模型是否合理、是否符合業務需求?我們可以用這個簡單框圖模擬一下業務流程,簡單地測試一下它的合理性。首先看看從這個框圖中能不能讀出類似這樣的信息:隸屬於一個部門的一個用戶擁有哪些角色就能對哪些資源具有訪問權限。如果可以,就可以說明這個模型設計是可行的。
  很明顯,這個數據模型設計的業務流程是通順的。因為對於這個框圖,我們可以這樣讀出它的流程:部門具有一些隸屬用戶,用戶擁有一些角色,角色對一些資源具有訪問權限。
  有了這個數據模型之後,就可以對節點和關係進行建模了。在建模中再來確定節點和關係的屬性,例如,用戶節點可能需要用戶名、密碼、性別、郵箱、創建日期等屬性,同時還要確定關係的對等方式,例如,是一對一、一對多還是多對多等。對於這個實例來說,用戶與部門的隸屬關係是多對一關係,用戶與角色的擁有關係和角色與資源的權限關係都是多對多關係。

購物網站數據模型

  如果覺得上麵的數據模型簡單了一點,那麼接下來我們使用一個業務需求比較複雜的實例來試一試,比如一個購物網站。購物網站的業務需求大概具有這樣的流程:首先商家上架了商品,然後顧客瀏覽或查找商品,顧客找到自己需要的商品之後,確定購買,接著使用他的賬戶支付款項,商家收到貨款後,將商品快遞給顧客,從而完成一筆交易。根據這個業務流程,我們畫出下圖的數據模型。
            圖片描述
  使用這個數據模型,我們同樣也可以先測試一下,即看一看它能不能通順地讀出一個購物網站的基本流程。比如完成一個完整的購物流程,首先是商家的庫存要上架商品,然後是顧客購買商品,即商品出售形成訂單;接下來是顧客結算訂單,使用賬戶付款,形成支付記錄,同時商家賬戶收到款項,並且訂單進入發貨狀態,同時生成物流記錄;這時候,商家的庫存辦理商品出庫,這樣商品就通過快遞進入送貨過程之中;最後顧客從收貨地址收到商品,並對訂單執行確認收貨操作,同時對商品進行評價,至此完成一次購物流程。這就可以說明,這個數據模型所表現的業務流程是通順的,所以它的設計是合理的。
  一般的購物網站還有購物車這一項,以滿足顧客一次選購多個商品的需求,所以還必須設計一個購物車,即在上述流程中插入一個挑選商品到購物車的過程。其中購物車隻是顧客與商品的一個關聯關係。
           圖片描述
  這下應該很完整了吧?這個模型的整個流程可以通過數據庫來表示。下圖是一個網上書店的模擬數據。
           圖片描述
  其中“顧客1”挑選了兩本書到他的購物車中,“顧客2”購買了一本小說,完成了一個完整的購物流程。
  不過,如果再仔細想想,則可能會發現,上麵的流程還需要更多的細化。比如,上麵的數據模型雖然可以表現一個正常交易的流程,但是如果出現不正常的交易情況,那這個數據模型就走不通了。例如,顧客下單後,有可能又不要了,所以,這就需要有撤銷訂單流程。又如,顧客收到商品之後,可能因為質量問題需要退貨和退款,所以,還需要增加相應的退貨和退款處理流程。另外,商家售賣的一種商品中還有可能具有型號、顏色、價格和庫存數量等不同分類,所以,對於商品節點還有必要進行細分。
  不難看出,對上麵的數據模型還必須再進行加工和細化。當然,除了這些,還可能有其他各種各樣的情況。不過,不管是什麼情況,都可以通過簡單框圖對數據模型進行細化和加工。至於最終怎麼建立起一個完整的購物網站數據模型,這裏就不再深入探索了。
  本文選自《Neo4j全棧開發》,點此鏈接可在博文視點官網查看此書。
                      圖片描述
  想及時獲得更多精彩文章,可在微信中搜索“博文視點”或者掃描下方二維碼並關注。
                         圖片描述

最後更新:2017-06-19 09:31:38

  上一篇:go  阿裏雲副總裁楊名:“通向智能之路”
  下一篇:go  永久免費OA辦公係統的功能模塊介紹(一)