sql >> Database teknologi >  >> RDS >> Mysql

Neo4j - Opret en begrænsning ved hjælp af Cypher

En begrænsning giver dig mulighed for at placere begrænsninger over de data, der kan indtastes mod en node eller en relation.

Begrænsninger hjælper med at håndhæve dataintegritet, fordi de forhindrer brugere i at indtaste den forkerte type data. Hvis en person forsøger at indtaste den forkerte type data, når en begrænsning er blevet anvendt, vil de modtage en fejlmeddelelse.

Begrænsningstyper

I Neo4j kan du skabe unik begrænsninger og ejendomseksistens begrænsninger.

Unikhedsbegrænsning
Specificerer, at egenskaben skal indeholde en unik værdi (dvs. ikke to noder med en kunstner etiket kan dele en værdi for navnet ejendom.)
Ejendomseksistensbegrænsning
Sikker på, at der findes en egenskab for alle noder med en specifik etiket eller for alle relationer med en specifik type. Begrænsninger for ejendomseksistens er kun tilgængelige i Neo4j Enterprise Edition.

Opret en unikhedsbegrænsning

For at oprette en unikhedsbegrænsning i Neo4j skal du bruge CREATE CONSTRAINT ON udmelding. Sådan:

CREATE CONSTRAINT ON (a:Artist) ASSERT a.Name IS UNIQUE

I ovenstående eksempel skaber vi en unikhed begrænsning på Navn egenskab for alle noder med Kunstner etiket.

Når sætningen lykkes, vises følgende meddelelse:

Når du opretter en begrænsning, vil Neo4j oprette et indeks. Cypher vil bruge dette indeks til opslag ligesom andre indekser.

Derfor er det ikke nødvendigt at oprette et separat indeks. Faktisk, hvis du forsøger at oprette en begrænsning, når der allerede er et indeks, vil du få en fejl.

Se begrænsningen

Begrænsninger (og indekser) bliver en del af (valgfrit) databaseskema.

Vi kan se den begrænsning, vi lige har oprettet, ved at bruge :schema kommando. Sådan:

:schema

Du vil se den nyoprettede begrænsning såvel som det indeks, der blev oprettet med den. Vi kan også se det indeks, der blev oprettet tidligere:

Test begrænsningen

Du kan teste, at begrænsningen faktisk virker ved at forsøge at skabe den samme kunstner to gange.

Kør følgende sætning to gange:

CREATE (a:Artist {Name: "Joe Satriani"}) 
RETURN a

Første gang du kører det, oprettes noden. Anden gang du kører det, skulle du modtage følgende fejlmeddelelse:

Ejendomseksistensbegrænsninger

Egenskabseksistensbegrænsninger kan bruges til at sikre, at alle noder med en bestemt etiket har en bestemt egenskab. For eksempel kan du angive, at alle noder er mærket med Kunstner skal indeholde et navn ejendom.

Brug ASSERT exists(variable.propertyName) for at oprette en egenskabs-eksistens-begrænsning syntaks.

Sådan:

CREATE CONSTRAINT ON (a.Artist) ASSERT exists(a.Name)

Bemærk, at begrænsninger for ejendomseksistens kun er tilgængelige i Neo4j Enterprise Edition.


  1. Hvad er formålet med datareplikering?

  2. Hvordan NOT RLIKE virker i MySQL

  3. TABLOCK vs TABLOCKX

  4. Hash joins på nullable kolonner