Một ràng buộc cho phép bạn đặt các hạn chế đối với dữ liệu có thể được nhập vào một nút hoặc một mối quan hệ.
Các ràng buộc giúp thực thi tính toàn vẹn của dữ liệu, vì chúng ngăn người dùng nhập sai loại dữ liệu. Nếu ai đó cố gắng nhập sai loại dữ liệu khi một ràng buộc đã được áp dụng, họ sẽ nhận được thông báo lỗi.
Các loại ràng buộc
Trong Neo4j, bạn có thể tạo ra tính độc đáo các ràng buộc và sự tồn tại của tài sản hạn chế.
- Ràng buộc về tính duy nhất
- Chỉ định rằng thuộc tính phải chứa một giá trị duy nhất (tức là không có hai nút nào có Artist nhãn có thể chia sẻ một giá trị cho Tên tài sản.)
- Ràng buộc về sự tồn tại của thuộc tính
- Đảm bảo rằng một thuộc tính tồn tại cho tất cả các nút có nhãn cụ thể hoặc cho tất cả các mối quan hệ với một kiểu cụ thể. Các ràng buộc về sự tồn tại thuộc tính chỉ có sẵn trong Neo4j Enterprise Edition.
Tạo ràng buộc về tính duy nhất
Để tạo ràng buộc về tính duy nhất trong Neo4j, hãy sử dụng CREATE CONSTRAINT ON
tuyên bố. Như thế này:
CREATE CONSTRAINT ON (a:Artist) ASSERT a.Name IS UNIQUE
Trong ví dụ trên, chúng tôi tạo ra một tính duy nhất ràng buộc về Tên thuộc tính của tất cả các nút với Artist nhãn.
Khi câu lệnh thành công, thông báo sau được hiển thị:
Khi bạn tạo một ràng buộc, Neo4j sẽ tạo một chỉ mục. Cypher sẽ sử dụng chỉ mục đó để tra cứu giống như các chỉ mục khác.
Do đó, không cần tạo một chỉ mục riêng. Trên thực tế, nếu bạn cố gắng tạo ràng buộc khi đã có chỉ mục, bạn sẽ gặp lỗi.
Xem Ràng buộc
Các ràng buộc (và chỉ mục) trở thành một phần của lược đồ cơ sở dữ liệu (tùy chọn).
Chúng ta có thể xem ràng buộc mà chúng ta vừa tạo bằng cách sử dụng :schema
yêu cầu. Như thế này:
:schema
Bạn sẽ thấy ràng buộc mới được tạo, cũng như chỉ mục được tạo với nó. Chúng ta cũng có thể xem chỉ mục đã được tạo trước đó:
Kiểm tra Ràng buộc
Bạn có thể kiểm tra xem ràng buộc có thực sự hoạt động hay không bằng cách cố gắng tạo cùng một nghệ sĩ hai lần.
Chạy câu lệnh sau hai lần:
CREATE (a:Artist {Name: "Joe Satriani"}) RETURN a
Lần đầu tiên bạn chạy nó, nút sẽ được tạo. Lần thứ hai bạn chạy nó, bạn sẽ nhận được thông báo lỗi sau:
Các ràng buộc về tính tồn tại của tài sản
Các ràng buộc về sự tồn tại thuộc tính có thể được sử dụng để đảm bảo tất cả các nút có nhãn nhất định đều có thuộc tính nhất định. Ví dụ:bạn có thể chỉ định rằng tất cả các nút được gắn nhãn Artist phải chứa Tên tài sản.
Để tạo ràng buộc tồn tại thuộc tính, hãy sử dụng ASSERT exists(variable.propertyName)
cú pháp.
Như thế này:
CREATE CONSTRAINT ON (a.Artist) ASSERT exists(a.Name)
Lưu ý rằng các ràng buộc về sự tồn tại thuộc tính chỉ có sẵn trong Neo4j Enterprise Edition.