Je suis dans ce mur en ce qui concerne les relations bidirectionnelles. Dites que j'essaie de créer un graphique qui représente un arbre généalogique. Le problème ici est que:
* Timmy peut être le frère de Suzie, mais
* Suzie ne peut pas être le frère de Timmy.Comment atténuer les relations bidirectionnelles dans un arbre généalogique, dans Neo4j?
Ainsi, il devient nécessaire de modéliser ce dans 2 directions:
(Bien sûr, techniquement je pourrais dire SIBLING_TO et ne laisser qu'un seul bord ... ce que je ne suis pas sûr de ce que le vocabulaire C'est quand j'essaie de connecter une grand-mère à un petit-fils.)
Quand tout est dit et fait, je suis sûr qu'il n'y a aucun moyen de contourner le fait que la direction importe dans cet exemple.
Je lisais ce blog post, en ce qui concerne les erreurs courantes de Neo4j. L'auteur affirme que cette bidirectionnalité n'est pas le moyen le plus efficace de modéliser des données dans Neo4j et devrait être évitée.
Et je commence à être d'accord. J'ai mis en place un jeu simulé de 2 familles:
et j'ai trouvé que beaucoup de requêtes que j'essayais de lancer allaient très, très lentement. C'est en raison de la nature «tout connecté à tous» du graphique, au moins dans chaque famille respective.
Ma question est la suivante:
1) Ai-je raison de dire que la bidirectionnalité n'est pas idéale? 2) Si oui, mon exemple d'arbre généalogique est-il représentable d'une autre manière ... et quelle est la «meilleure pratique» dans les nombreuses situations où mon problème peut survenir?
3) S'il n'est pas possible de représenter l'arbre généalogique d'une autre manière, est-il techniquement possible d'écrire encore des requêtes de manière à contourner le problème de 1)?
Merci d'avoir lu ceci et de vos commentaires.
liens bidirectionnels du même nom de bord sont redondants et sans valeur ajoutée . frère-à et soeur-à transmettre quelques informations, bien que cela pourrait être déduit d'une propriété. une relation (enfant) - [: PARENT] -> (parent) vous permet d'avoir la relation parent/enfant et d'obtenir toute la relation famille biologique, et vous pouvez l'utiliser pour chaque génération de parents/enfants. Step kids serait une question différente. –