Een beperking stelt u in staat beperkingen op te leggen voor de gegevens die kunnen worden ingevoerd voor een knooppunt of een relatie.
Beperkingen helpen de gegevensintegriteit af te dwingen, omdat ze voorkomen dat gebruikers de verkeerde soort gegevens invoeren. Als iemand probeert de verkeerde soort gegevens in te voeren wanneer een beperking is toegepast, ontvangt hij een foutmelding.
Beperkingstypen
In Neo4j kun je uniek . creëren beperkingen en bestaan van eigendom beperkingen.
- Uniqueness-beperking
- Geeft aan dat de eigenschap een unieke waarde moet bevatten (d.w.z. geen twee knooppunten met een Artiest label kan een waarde delen voor de Naam eigendom.)
- Bestaansbeperking van eigendom
- Zorgt ervoor dat er een eigenschap bestaat voor alle knooppunten met een specifiek label of voor alle relaties met een specifiek type. Bestaansbeperkingen van eigenschappen zijn alleen beschikbaar in de Neo4j Enterprise Edition.
Maak een uniciteitsbeperking
Om een uniciteitsbeperking in Neo4j te creëren, gebruikt u de CREATE CONSTRAINT ON
uitspraak. Zoals dit:
CREATE CONSTRAINT ON (a:Artist) ASSERT a.Name IS UNIQUE
In het bovenstaande voorbeeld creëren we een uniekheid beperking op de Naam eigenschap van alle knooppunten met de Artiest label.
Wanneer de instructie slaagt, wordt het volgende bericht weergegeven:
Wanneer u een beperking maakt, maakt Neo4j een index. Cypher zal die index gebruiken voor zoekopdrachten, net als andere indexen.
Het is daarom niet nodig om een aparte index te maken. Als je een beperking probeert te maken terwijl er al een index is, krijg je een foutmelding.
Bekijk de beperking
Beperkingen (en indexen) worden onderdeel van het (optionele) databaseschema.
We kunnen de beperking bekijken die we zojuist hebben gemaakt met behulp van het :schema
opdracht. Zoals dit:
:schema
U ziet de nieuw gemaakte beperking, evenals de index die ermee is gemaakt. We kunnen ook de index zien die eerder is gemaakt:
Test de beperking
Je kunt testen of de beperking echt werkt door twee keer te proberen dezelfde artiest te maken.
Voer de volgende instructie twee keer uit:
CREATE (a:Artist {Name: "Joe Satriani"}) RETURN a
De eerste keer dat u het uitvoert, wordt het knooppunt gemaakt. De tweede keer dat u het uitvoert, zou u de volgende foutmelding moeten krijgen:
Bestaansbeperkingen van onroerend goed
Bestaansbeperkingen van eigenschappen kunnen worden gebruikt om ervoor te zorgen dat alle knooppunten met een bepaald label een bepaalde eigenschap hebben. U kunt bijvoorbeeld specificeren dat alle knooppunten die zijn gelabeld met Artiest moet een Naam . bevatten eigendom.
Gebruik de ASSERT exists(variable.propertyName)
om een eigenschapsvoorwaarde te maken. syntaxis.
Zoals dit:
CREATE CONSTRAINT ON (a.Artist) ASSERT exists(a.Name)
Houd er rekening mee dat beperkingen voor het bestaan van eigenschappen alleen beschikbaar zijn in de Neo4j Enterprise Edition.