Une contrainte vous permet de placer des restrictions sur les données qui peuvent être saisies sur un nœud ou une relation.
Les contraintes aident à renforcer l'intégrité des données, car elles empêchent les utilisateurs d'entrer le mauvais type de données. Si quelqu'un essaie de saisir le mauvais type de données lorsqu'une contrainte a été appliquée, il recevra un message d'erreur.
Types de contraintes
Dans Neo4j, vous pouvez créer unicité contraintes et existence de la propriété contraintes.
- Contrainte d'unicité
- Spécifie que la propriété doit contenir une valeur unique (c'est-à-dire pas deux nœuds avec un Artiste l'étiquette peut partager une valeur pour le Nom propriété.)
- Contrainte d'existence de propriété
- Assure qu'une propriété existe pour tous les nœuds avec une étiquette spécifique ou pour toutes les relations avec un type spécifique. Les contraintes d'existence de propriété ne sont disponibles que dans Neo4j Enterprise Edition.
Créer une contrainte d'unicité
Pour créer une contrainte d'unicité dans Neo4j, utilisez le CREATE CONSTRAINT ON
déclaration. Comme ceci :
CREATE CONSTRAINT ON (a:Artist) ASSERT a.Name IS UNIQUE
Dans l'exemple ci-dessus, nous créons une unicité contrainte sur le Nom propriété de tous les nœuds avec l' Artiste étiqueter.
Lorsque l'instruction réussit, le message suivant s'affiche :
Lorsque vous créez une contrainte, Neo4j crée un index. Cypher utilisera cet index pour les recherches comme les autres index.
Par conséquent, il n'est pas nécessaire de créer un index séparé. En fait, si vous essayez de créer une contrainte alors qu'il existe déjà un index, vous obtiendrez une erreur.
Afficher la contrainte
Les contraintes (et les index) font partie du schéma (facultatif) de la base de données.
Nous pouvons voir la contrainte que nous venons de créer en utilisant le :schema
commande. Comme ceci :
:schema
Vous verrez la contrainte nouvellement créée, ainsi que l'index qui a été créé avec elle. Nous pouvons également voir l'index qui a été créé précédemment :
Tester la contrainte
Vous pouvez vérifier que la contrainte fonctionne réellement en essayant de créer deux fois le même artiste.
Exécutez deux fois l'instruction suivante :
CREATE (a:Artist {Name: "Joe Satriani"}) RETURN a
La première fois que vous l'exécuterez, le nœud sera créé. La deuxième fois que vous l'exécutez, vous devriez recevoir le message d'erreur suivant :
Contraintes d'existence de la propriété
Les contraintes d'existence de propriété peuvent être utilisées pour s'assurer que tous les nœuds avec une certaine étiquette ont une certaine propriété. Par exemple, vous pouvez spécifier que tous les nœuds étiquetés avec Artiste doit contenir un Nom propriété.
Pour créer une contrainte d'existence de propriété, utilisez le ASSERT exists(variable.propertyName)
syntaxe.
Comme ceci :
CREATE CONSTRAINT ON (a.Artist) ASSERT exists(a.Name)
Notez que les contraintes d'existence de propriété ne sont disponibles que dans Neo4j Enterprise Edition.