batasan memungkinkan Anda untuk menempatkan batasan pada data yang dapat dimasukkan terhadap simpul atau hubungan.
Batasan membantu menegakkan integritas data, karena mencegah pengguna memasukkan jenis data yang salah. Jika seseorang mencoba memasukkan jenis data yang salah saat batasan diterapkan, mereka akan menerima pesan kesalahan.
Jenis Batasan
Di Neo4j, Anda dapat membuat keunikan batasan dan keberadaan properti kendala.
- Batasan Keunikan
- Menentukan bahwa properti harus berisi nilai unik (yaitu tidak ada dua node dengan Artis label dapat membagikan nilai untuk Name properti.)
- Kendala Keberadaan Properti
- Memastikan bahwa ada properti untuk semua node dengan label tertentu atau untuk semua hubungan dengan tipe tertentu. Batasan keberadaan properti hanya tersedia di Neo4j Enterprise Edition.
Buat Batasan Keunikan
Untuk membuat batasan keunikan di Neo4j, gunakan CREATE CONSTRAINT ON
penyataan. Seperti ini:
CREATE CONSTRAINT ON (a:Artist) ASSERT a.Name IS UNIQUE
Pada contoh di atas, kita membuat keunikan batasan pada Nama properti semua node dengan Artist label.
Ketika pernyataan berhasil, pesan berikut akan ditampilkan:
Saat Anda membuat batasan, Neo4j akan membuat file index. Cypher akan menggunakan indeks itu untuk pencarian seperti indeks lainnya.
Oleh karena itu, tidak perlu membuat indeks terpisah. Faktanya, jika Anda mencoba membuat batasan saat sudah ada indeks, Anda akan mendapatkan kesalahan.
Melihat Batasan
Batasan (dan indeks) menjadi bagian dari skema database (opsional).
Kita dapat melihat batasan yang baru saja kita buat dengan menggunakan :schema
memerintah. Seperti ini:
:schema
Anda akan melihat batasan yang baru dibuat, serta indeks yang dibuat dengannya. Kita juga bisa melihat indeks yang telah dibuat sebelumnya:
Uji Batasan
Anda dapat menguji bahwa batasan benar-benar berfungsi dengan mencoba membuat artis yang sama dua kali.
Jalankan pernyataan berikut dua kali:
CREATE (a:Artist {Name: "Joe Satriani"}) RETURN a
Pertama kali Anda menjalankannya, node akan dibuat. Kali kedua Anda menjalankannya, Anda akan menerima pesan kesalahan berikut:
Kendala Keberadaan Properti
Batasan keberadaan properti dapat digunakan untuk memastikan semua node dengan label tertentu memiliki properti tertentu. Misalnya, Anda dapat menentukan bahwa semua node berlabel Artist harus berisi Nama properti.
Untuk membuat batasan keberadaan properti, gunakan ASSERT exists(variable.propertyName)
sintaks.
Seperti ini:
CREATE CONSTRAINT ON (a.Artist) ASSERT exists(a.Name)
Perhatikan bahwa batasan keberadaan properti hanya tersedia di Neo4j Enterprise Edition.