omezení umožňuje umístit omezení na data, která lze zadat proti uzlu nebo vztahu.
Omezení pomáhají zajistit integritu dat, protože zabraňují uživatelům zadávat nesprávný druh dat. Pokud se někdo pokusí zadat nesprávný druh dat, když bylo aplikováno omezení, zobrazí se mu chybová zpráva.
Typy omezení
V Neo4j můžete vytvořit jedinečnost omezení a existence majetku omezení.
- Omezení jedinečnosti
- Udává, že vlastnost musí obsahovat jedinečnou hodnotu (tj. žádné dva uzly s Umělcem štítek může sdílet hodnotu pro Název vlastnost.)
- Omezení existence vlastnosti
- Zajišťuje, že vlastnost existuje pro všechny uzly se specifickým štítkem nebo pro všechny vztahy s určitým typem. Omezení existence vlastnosti jsou dostupná pouze v Neo4j Enterprise Edition.
Vytvořte omezení jedinečnosti
Chcete-li vytvořit omezení jedinečnosti v Neo4j, použijte CREATE CONSTRAINT ON
prohlášení. Takhle:
CREATE CONSTRAINT ON (a:Artist) ASSERT a.Name IS UNIQUE
Ve výše uvedeném příkladu vytvoříme jedinečnost omezení na Název vlastnost všech uzlů s Artist označení.
Když je příkaz úspěšný, zobrazí se následující zpráva:
Když vytvoříte omezení, Neo4j vytvoří index. Cypher použije tento index pro vyhledávání stejně jako ostatní indexy.
Není tedy potřeba vytvářet samostatný index. Ve skutečnosti, pokud se pokusíte vytvořit omezení, když již existuje index, dostanete chybu.
Zobrazit omezení
Omezení (a indexy) se stávají součástí (volitelného) databázového schématu.
Omezení, které jsme právě vytvořili, můžeme zobrazit pomocí :schema
příkaz. Takhle:
:schema
Uvidíte nově vytvořené omezení a také index, který byl s ním vytvořen. Můžeme také vidět index, který byl vytvořen dříve:
Otestujte omezení
Můžete otestovat, že omezení skutečně funguje, pokusem o vytvoření stejného umělce dvakrát.
Spusťte dvakrát následující příkaz:
CREATE (a:Artist {Name: "Joe Satriani"}) RETURN a
Při prvním spuštění se uzel vytvoří. Při druhém spuštění by se měla zobrazit následující chybová zpráva:
Omezení existence vlastnosti
Omezení existence vlastnosti lze použít k zajištění, aby všechny uzly s určitým štítkem měly určitou vlastnost. Můžete například určit, že všechny uzly jsou označeny Artist musí obsahovat Název vlastnost.
Chcete-li vytvořit omezení existence vlastnosti, použijte ASSERT exists(variable.propertyName)
syntaxe.
Takhle:
CREATE CONSTRAINT ON (a.Artist) ASSERT exists(a.Name)
Všimněte si, že omezení existence vlastnosti jsou dostupná pouze v Neo4j Enterprise Edition.