これは設計上の問題であり、パフォーマンスとメンテナンスに関する注意事項が必要です。ラベルとリレーションシップによるNeo4Jデータモデルの設計
ラベルは他のノード/ラベルとの関係を示すことをお勧めしますか?
Approach-1:
create (n:Actor:Director {name:'Clint Eastwood'})
create (n:Movie {name:'Gran Torino'})
MATCH (a:Actor {name:'Clint Eastwood'}), (m:Movie {name:'Gran Torino'})
CREATE (a)-[:ACTED_IN]->(m)
この場合、Actor/Directorは実際には人物と映画ノードの関係です。その人物が映画の俳優と監督の両方であれば、映画ノードとの2つの関係を持つPersonノードとして作成する必要がありますか?
Approach-2:
create (n:Person {name:'Clint Eastwood'})
create (n:Movie {name:'Gran Torino'})
MATCH (p:Person {name:'Clint Eastwood'}), (m:Movie {name:'Gran Torino'})
CREATE (p)-[:ACTOR]->(m)
MATCH (p:Person {name:'Clint Eastwood'}), (m:Movie {name:'Gran Torino'})
CREATE (p)-[:DIRECTOR]->(m)
アプローチ-2は、より良いエンジニアリング賢明なようだ、しかしのNeo4jの例のドキュメントでは、(参照:https://neo4j.com/developer/kb/how-do-i-report-on-nodes-with-multiple-labels/)-1に接近するようにreferes
をだから、どちらが長期的には、クリーナーより良い、そしてより効率的です?