Neo4j資料模型設計

2021-08-02 18:24:17 字數 2190 閱讀 9816

摘要: 資料模型設計是資料建模的第一步,因為neo4j不需要模式結構定義,所以使用簡單框圖就可以為乙個專案或應用設計資料模型。建立資料模型之後,就可以使用sdn進行資料實體建模和一些資料訪問的設計。 本文選自《neo4j全棧開發》。

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

在乙個訪問控制系統中,它的業務需求可以簡單地描述為:怎樣控制乙個使用者的訪問許可權。即乙個使用者登入系統後,他對系統的哪些資源具有訪問許可權。通過分析和結合以往的經驗,我們可能需要四個節點,分別是使用者、部門、角色和資源;三個關係,分別是隸屬、擁有和許可權。這樣,我們就可以畫出下圖的使用者訪問控制資料模型。

這個資料模型是否合理、是否符合業務需求?我們可以用這個簡單框圖模擬一下業務流程,簡單地測試一下它的合理性。首先看看從這個框圖中能不能讀出類似這樣的資訊:隸屬於乙個部門的乙個使用者擁有哪些角色就能對哪些資源具有訪問許可權。如果可以,就可以說明這個模型設計是可行的。

很明顯,這個資料模型設計的業務流程是通順的。因為對於這個框圖,我們可以這樣讀出它的流程:部門具有一些隸屬使用者,使用者擁有一些角色,角色對一些資源具有訪問許可權。

有了這個資料模型之後,就可以對節點和關係進行建模了。在建模中再來確定節點和關係的屬性,例如,使用者節點可能需要使用者名稱、密碼、性別、郵箱、建立日期等屬性,同時還要確定關係的對等方式,例如,是一對

一、一對多還是多對多等。對於這個例項來說,使用者與部門的隸屬關係是多對一關係,使用者與角色的擁有關係和角色與資源的許可權關係都是多對多關係。

如果覺得上面的資料模型簡單了一點,那麼接下來我們使用乙個業務需求比較複雜的例項來試一試,比如乙個購物**。購物**的業務需求大概具有這樣的流程:首先商家上架了商品,然後顧客瀏覽或查詢商品,顧客找到自己需要的商品之後,確定購買,接著使用他的賬戶支付款項,商家收到貨款後,將商品快遞給顧客,從而完成一筆交易。根據這個業務流程,我們畫出下圖的資料模型。

使用這個資料模型,我們同樣也可以先測試一下,即看一看它能不能通順地讀出乙個購物**的基本流程。比如完成乙個完整的購物流程,首先是商家的庫存要上架商品,然後是顧客購買商品,即商品**形成訂單;接下來是顧客結算訂單,使用賬戶付款,形成支付記錄,同時商家賬戶收到款項,並且訂單進入發貨狀態,同時生成物流記錄;這時候,商家的庫存辦理商品出庫,這樣商品就通過快遞進入送貨過程之中;最後顧客從收貨位址收到商品,並對訂單執行確認收貨操作,同時對商品進行評價,至此完成一次購物流程。這就可以說明,這個資料模型所表現的業務流程是通順的,所以它的設計是合理的。

一般的購物**還有購物車這一項,以滿足顧客一次選購多個商品的需求,所以還必須設計乙個購物車,即在上述流程中插入乙個挑選商品到購物車的過程。其中購物車只是顧客與商品的乙個關聯關係。

這下應該很完整了吧?這個模型的整個流程可以通過資料庫來表示。下圖是乙個網上書店的模擬資料。

其中「顧客1」挑選了兩本書到他的購物車中,「顧客2」購買了一本**,完成了乙個完整的購物流程。

不過,如果再仔細想想,則可能會發現,上面的流程還需要更多的細化。比如,上面的資料模型雖然可以表現乙個正常交易的流程,但是如果出現不正常的交易情況,那這個資料模型就走不通了。例如,顧客下單後,有可能又不要了,所以,這就需要有撤銷訂單流程。又如,顧客收到商品之後,可能因為質量問題需要退貨和退款,所以,還需要增加相應的退貨和退款處理流程。另外,商家售賣的一種商品中還有可能具有型號、顏色、**和庫存數量等不同分類,所以,對於商品節點還有必要進行細分。

不難看出,對上面的資料模型還必須再進行加工和細化。當然,除了這些,還可能有其他各種各樣的情況。不過,不管是什麼情況,都可以通過簡單框圖對資料模型進行細化和加工。至於最終怎麼建立起乙個完整的購物**資料模型,這裡就不再深入探索了。

本文選自《neo4j全棧開發》,點此鏈結可在博文視點官網檢視此書。

Neo4j資料模型設計

摘要 資料模型設計是資料建模的第一步,因為neo4j不需要模式結構定義,所以使用簡單框圖就可以為乙個專案或應用設計資料模型。建立資料模型之後,就可以使用sdn進行資料實體建模和一些資料訪問的設計。本文選自 neo4j全棧開發 開始資料模型設計,一般通過分析業務需求就可以提取出需要建立的節點和關係,然...

Neo4j資料模型設計

開始資料模型設計,一般通過分析業務需求就可以提取出需要建立的節點和關係,然後使用節點和關係畫出框圖,即可完成資料模型的設計。下面通過兩個例項來簡要說明資料模型的設計過程。在乙個訪問控制系統中,它的業務需求可以簡單地描述為 怎樣控制乙個使用者的訪問許可權。即乙個使用者登入系統後,他對系統的哪些資源具有...

Neo4j學習(2) Win系統安裝Neo4j

neo4j 是目前最流行的圖形資料庫,支援完整的事務,在屬性圖中,圖是由頂點 vertex 邊 edge 和屬性 property 組成的,頂點和邊都可以設定屬性,頂點也稱作節點,邊也稱作關係,每個節點和關係都可以由乙個或多個屬性。neo4j建立的圖是用頂點和邊構建乙個有向圖,其查詢語言cypher...