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

Neo4j - Crea un vincolo usando Cypher

Un vincolo ti consente di porre restrizioni sui dati che possono essere inseriti rispetto a un nodo o a una relazione.

I vincoli aiutano a rafforzare l'integrità dei dati, perché impediscono agli utenti di inserire il tipo sbagliato di dati. Se qualcuno tenta di inserire il tipo sbagliato di dati quando è stato applicato un vincolo, riceverà un messaggio di errore.

Tipi di vincoli

In Neo4j puoi creare unicità vincoli ed esistenza della proprietà vincoli.

Vincolo di unicità
Specifica che la proprietà deve contenere un valore univoco (cioè non ci sono due nodi con un Artista label può condividere un valore per il Nome proprietà.)
Vincolo di esistenza della proprietà
Assicura che esista una proprietà per tutti i nodi con un'etichetta specifica o per tutte le relazioni con un tipo specifico. I vincoli di esistenza della proprietà sono disponibili solo nella Neo4j Enterprise Edition.

Crea un vincolo di unicità

Per creare un vincolo di unicità in Neo4j, usa CREATE CONSTRAINT ON dichiarazione. In questo modo:

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

Nell'esempio sopra, creiamo una unicità vincolo sul Nome proprietà di tutti i nodi con Artist etichetta.

Quando l'istruzione ha esito positivo, viene visualizzato il seguente messaggio:

Quando crei un vincolo, Neo4j creerà un indice. Cypher utilizzerà quell'indice per le ricerche proprio come altri indici.

Pertanto, non è necessario creare un indice separato. Infatti, se provi a creare un vincolo quando c'è già un indice, riceverai un errore.

Visualizza il vincolo

I vincoli (e gli indici) diventano parte dello schema del database (facoltativo).

Possiamo visualizzare il vincolo che abbiamo appena creato usando il :schema comando. In questo modo:

:schema

Vedrai il vincolo appena creato, così come l'indice che è stato creato con esso. Possiamo anche vedere l'indice che è stato creato in precedenza:

Verifica il vincolo

Puoi verificare che il vincolo funzioni effettivamente provando a creare lo stesso artista due volte.

Esegui due volte la seguente istruzione:

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

La prima volta che lo esegui, il nodo verrà creato. La seconda volta che lo esegui, dovresti ricevere il seguente messaggio di errore:

Vincoli di esistenza della proprietà

I vincoli di esistenza delle proprietà possono essere utilizzati per garantire che tutti i nodi con una determinata etichetta dispongano di una determinata proprietà. Ad esempio, puoi specificare che tutti i nodi siano etichettati con Artista deve contenere un Nome proprietà.

Per creare un vincolo di esistenza di una proprietà, usa ASSERT exists(variable.propertyName) sintassi.

In questo modo:

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

Nota che i vincoli di esistenza delle proprietà sono disponibili solo in Neo4j Enterprise Edition.