Saltar al contenido

Cómo crear una restricción única que involucre múltiples propiedades en Neo4J

Solución:

neo4j (2.0.1) no admite actualmente una restricción de unicidad que cubra varias propiedades simultáneamente.

Sin embargo, puedo pensar en una solución alternativa que podría ser aceptable, dependiendo de sus casos de uso. Supongamos que desea que las propiedades a, byc sean únicas como grupo. Puede agregar una propiedad adicional, d, que concatena los valores en cadena de a, byc, usando delimitadores apropiados para separar las subcadenas (de manera que, por ejemplo, el delimitador a / b es un carácter que nunca aparece en a o b). A continuación, puede crear una restricción de unicidad en d.

[UPDATE]

Neo4j 3.3 agregó soporte para restricciones de unicidad que cubren múltiples propiedades, a través de restricciones de clave de nodo. Sin embargo, esta función solo está disponible en Enterprise Edition.

A partir de la versión 3.3 de neo4j hay una restricción llamada NODE KEY que se puede utilizar para la unicidad en varias propiedades.

De la documentación:

Crear una clave de nodo asegurándose de que todos los nodos con una etiqueta en particular tengan un conjunto de propiedades definidas cuyo valor combinado sea único y donde estén presentes todas las propiedades del conjunto.

Consulta de ejemplo

CREATE CONSTRAINT ON (n:Person) ASSERT (n.firstname, n.surname) IS NODE KEY

A partir de ahora, neo4j (v3.0.3) todavía no admite restricciones únicas con múltiples propiedades. La razón detrás de esto es:
When a unique constraint is created it also creates an index on it and as indexes only allow one property, thus constraints can only be applied on one index.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *