unidireccional una tipos relación que palabra oracion las informatica educacion con comunicacion bidireccional analogías neo4j spring-data-neo4j

una - Convención de nomenclatura para relaciones bidireccionales en Neo4j(utilizando Spring Data)



tipos de comunicacion bidireccional y unidireccional (1)

No hay relaciones bidireccionales en Neo4j. Cada relación tiene un nodo de inicio y un nodo final. Dicho esto, puede optar por ignorar esa dirección al escribir recorridos, utilizando efectivamente la relación como bidireccional.

Lo que intentas modelar es personas que poseen autos. (persona) - [: OWNS] -> (automóvil) significa dos cosas: desde el punto de vista de la persona, esta relación saliente muestra que la persona es dueña del automóvil. Desde el punto de vista del automóvil, la misma relación (pero entrante) significa que es propiedad de la persona.

La anotación @RelatedTo en SDN usa Direction.OUTGOING de manera predeterminada, si no se especifica ninguna dirección. Esta es la razón por la que podría haber pensado que estas relaciones son bidireccionales, pero no lo son; están SALIENDO por defecto.

Así que modelaría su dominio así:

@NodeEntity public class Person { @Indexed private String name; @RelatedTo(type="OWNS", direction=Direction.OUTGOING) //or no direction, same thing private Set<Car> cars; } @NodeEntity public class Car { @Indexed private String description; @RelatedTo(type="OWNS", direction=Direction.INCOMING) private Person person; }

Necesito algunos consejos para dar nombre a las relaciones. Además, no estoy seguro de cómo tengo que anotar las entidades de mi dominio con los datos de primavera. La mayoría de los ejemplos que he visto son unidireccionales y el nombre elegido es bastante sencillo.

Elija el siguiente ejemplo:

@NodeEntity public class Person { @Indexed private String name; @RelatedTo(type="OWNS", direction=Direction.OUTGOING) private Set<Car> cars; }

El nombre de la relación parece estar bien, no hay problema.

Ahora supongamos que quiero hacer que esta relación sea bidireccional. ¿Cuáles son las diferencias (y los pros / contras) de los siguientes enfoques?

1) Haga que ambos lados de la dirección de relación = Dirección.HERO y llame a la relación tipo = "PROPIEDAD"?

@NodeEntity public class Person { @Indexed private String name; @RelatedTo(type="OWNERSHIP", direction=Direction.BOTH) private Set<Car> cars; } @NodeEntity public class Car { @Indexed private String description; @RelatedTo(type="OWNERSHIP", direction=Direction.BOTH) private Person person; }

2) Usa dirección en ambos lados?

@NodeEntity public class Person { @Indexed private String name; @RelatedTo(type="OWNS", direction=Direction.OUTGOING) private Set<Car> cars; } @NodeEntity public class Car { @Indexed private String description; @RelatedTo(type="OWNED_BY", direction=Direction.INCOMING) private Person person; }