Eine Einschränkung ermöglicht es Ihnen, die Daten einzuschränken, die für einen Knoten oder eine Beziehung eingegeben werden können.
Einschränkungen tragen zur Durchsetzung der Datenintegrität bei, da sie Benutzer daran hindern, die falsche Art von Daten einzugeben. Wenn jemand versucht, die falschen Daten einzugeben, wenn eine Einschränkung angewendet wurde, erhält er eine Fehlermeldung.
Einschränkungstypen
In Neo4j können Sie Einzigartigkeit schaffen Beschränkungen und Eigenschaftsexistenz Einschränkungen.
- Eindeutigkeitseinschränkung
- Gibt an, dass die Eigenschaft einen eindeutigen Wert enthalten muss (d. h. keine zwei Knoten mit einem Künstler Label kann einen Wert für den Namen teilen Eigentum.)
- Existenzbeschränkung für Eigenschaft
- Stellt sicher, dass eine Eigenschaft für alle Knoten mit einem bestimmten Label oder für alle Beziehungen mit einem bestimmten Typ vorhanden ist. Existenzbeschränkungen für Eigenschaften sind nur in der Neo4j Enterprise Edition verfügbar.
Erstellen Sie eine Eindeutigkeitsbeschränkung
Um eine Eindeutigkeitsbeschränkung in Neo4j zu erstellen, verwenden Sie CREATE CONSTRAINT ON
Erklärung. So:
CREATE CONSTRAINT ON (a:Artist) ASSERT a.Name IS UNIQUE
Im obigen Beispiel erstellen wir eine Eindeutigkeit Beschränkung auf den Namen -Eigenschaft aller Knoten mit dem Künstler Etikette.
Wenn die Anweisung erfolgreich ist, wird die folgende Nachricht angezeigt:
Wenn Sie eine Einschränkung erstellen, erstellt Neo4j einen Index. Cypher verwendet diesen Index genau wie andere Indizes für Suchvorgänge.
Daher muss kein separater Index erstellt werden. Wenn Sie versuchen, eine Einschränkung zu erstellen, obwohl bereits ein Index vorhanden ist, erhalten Sie eine Fehlermeldung.
Beschränkung anzeigen
Einschränkungen (und Indizes) werden Teil des (optionalen) Datenbankschemas.
Wir können die gerade erstellte Einschränkung anzeigen, indem wir :schema
verwenden Befehl. So:
:schema
Sie sehen die neu erstellte Einschränkung sowie den Index, der damit erstellt wurde. Wir können auch den zuvor erstellten Index sehen:
Testen Sie die Einschränkung
Sie können testen, ob die Einschränkung tatsächlich funktioniert, indem Sie versuchen, denselben Künstler zweimal zu erstellen.
Führen Sie die folgende Anweisung zweimal aus:
CREATE (a:Artist {Name: "Joe Satriani"}) RETURN a
Wenn Sie es zum ersten Mal ausführen, wird der Knoten erstellt. Bei der zweiten Ausführung sollten Sie die folgende Fehlermeldung erhalten:
Eigentumsexistenzbeschränkungen
Existenzbeschränkungen für Eigenschaften können verwendet werden, um sicherzustellen, dass alle Knoten mit einem bestimmten Label eine bestimmte Eigenschaft haben. Beispielsweise könnten Sie angeben, dass alle Knoten mit Künstler gekennzeichnet sind muss einen Namen enthalten Eigentum.
Um eine Existenzbeschränkung für Eigenschaften zu erstellen, verwenden Sie ASSERT exists(variable.propertyName)
Syntax.
So:
CREATE CONSTRAINT ON (a.Artist) ASSERT exists(a.Name)
Beachten Sie, dass Existenzbeschränkungen für Eigenschaften nur in der Neo4j Enterprise Edition verfügbar sind.