2016-02-13 123 views
-2

我在圖形數據庫的世界新的和不知道有關的產品的買賣關係下的經典場景推薦的建模選項圖形數據庫:推薦建模

  • 史蒂夫買了iPhone 6加上亞馬遜

    CREATE(Steve:Person {name:「Steve」}) - [b1:BOUGHT] - >(iPhone:Product {name:「iPhone 6 Plus」})< - [s1:SELLS] - (亞馬遜:Company {name:「Amazon」})

  • 邁克爾當時還買了iPho (iPhone:< - [s2:SELLS] - (eBay:Company {name:nel Plus,但來自eBay

    CREATE(Michael:Person {name:「Michael」}) - [b2:BOUGHT] - > 「易趣」})


因此,亞馬遜和eBay都銷售iPhone 6 Plus和史蒂夫和邁克爾都買了下來。
CLICK TO VIEW ILLUSTRATED MODEL WITH THE PRODUCT NODE
問題:有這個擔心合併建模等,目前尚不清楚從公司史蒂夫或邁克爾買了iPhone 6此外,因爲節點「iPhone 6加」共享

建模可以在這樣的簡化:

CREATE (Steve:Person {name: "Steve"})-[b1:BOUGHT_FROM {product: "iPhone 6 Plus"}]->(Amazon:Company {name: "Amazon"}) 
CREATE (Michael:Person {name: "Michael"})-[b2:BOUGHT_FROM {product: "iPhone 6 Plus"}]->(eBay:Company {name: "eBay"}) 


CLICK TO VIEW ILLUSTRATED MODEL WITHOUT THE PRODUCT NODE
在失去了「iPhone 6增強版」節點,並與其中的細節將被嵌入的方式替換它得到的關係屬性本身,但同時允許史蒂夫和亞馬遜之間的直接關係。

有沒有一種方法可以在Steve這樣從亞馬遜買到iPhone的情況下保持清晰的信息,Michael也從eBay購買了iPhone並同時保留了iPhone的節點?

回答

0

作爲一個簡單的選擇,你可以添加關係到一個銷售Company和一個或多個Products從該公司購買了Purchase節點。

下面舉例說明數據模型,不是任何Cypher子句。

  • 史蒂夫買了iPhone 6加上亞馬遜

    (:Person {name: "Steve"})-[:BOUGHT]->(p:Purchase {id:987, total: 655.99, tax: 56.00}) 
    (p)-[:PRODUCT {price: 599.99}]->(iPhone:Product {name: "iPhone 6 Plus"}) 
    (p)-[:SELLER]->(:Company {name: "Amazon"}) 
    
  • 邁克爾然後還買了iPhone 6 Plus上,而是來自eBay

    (:Person {name: "Michael"})-[:BOUGHT]->(p:Purchase {id:456, total: 599.99, tax: 0.00}}) 
    (p)-[:PRODUCT {price: 599.99}]->(iPhone:Product {name: "iPhone 6 Plus"}) 
    (p)-[:SELLER]->(:Company {name: "eBay"}) 
    

的實際查詢,使購買Steve可能如下所示:

MERGE (person:Person {name: "Steve"}) 
MERGE (prod:Product {name: "iPhone 6 Plus"}) 
MERGE (co:Company {name: "Amazon"}) 
CREATE 
    (person)-[:BOUGHT]->(p:Purchase {id:987, total: 655.99, tax: 56.00}), 
    (p)-[:PRODUCT {price: 599.99}]->(prod), 
    (p)-[:SELLER]->(co); 
+0

這個模型中的瓶頸在於,它不能顯示,亞馬遜銷售的產品iPhone一般來說,除非它是字面上史蒂夫 –

+0

買這不是一個問題,因爲你仍然可以有從亞馬遜SELLS關係(和易趣)到同一個iPhone產品。但是我的答案也可能並不代表你想要使用的實際模型,因爲你必須考慮所有的用例。 – cybersam