Neo4j - Tạo Ràng buộc Duy nhất
Trong cơ sở dữ liệu Neo4j, lệnh CQL CREATE luôn tạo một nút hoặc mối quan hệ mới, có nghĩa là ngay cả khi bạn sử dụng các giá trị giống nhau, lệnh này sẽ chèn một hàng mới. Theo yêu cầu ứng dụng của chúng tôi đối với một số nút hoặc mối quan hệ, chúng tôi phải tránh sự trùng lặp này. Đối với điều này, chúng ta nên sử dụng một số ràng buộc cơ sở dữ liệu để tạo quy tắc trên một hoặc nhiều thuộc tính của một nút hoặc mối quan hệ.
Giống như SQL, cơ sở dữ liệu Neo4j cũng hỗ trợ ràng buộc DUY NHẤT về thuộc tính nút hoặc mối quan hệ. Ràng buộc UNIQUE được sử dụng để tránh bản ghi trùng lặp và để thực thi quy tắc toàn vẹn dữ liệu.
Tạo Ràng buộc DUY NHẤT
Neo4j CQL cung cấp lệnh "CREATE CONSTRAINT" để tạo các ràng buộc duy nhất trên các thuộc tính của nút hoặc mối quan hệ.
Cú pháp
Sau đây là cú pháp để tạo một ràng buộc DUY NHẤT trong Neo4j.
MATCH (root {name: "Dhawan"})
CREATE UNIQUE (root)-[:LOVES]-(someone)
RETURN someone
Thí dụ
Trước khi tiếp tục với ví dụ, hãy tạo 4 nút như hình dưới đây.
CREATE(Dhawan:player{id:001, name: "shikar Dhawan", YOB: 1995, POB: "Delhi"})
CREATE(Jonathan:player {id:002, name: "Jonathan Trott", YOB: 1981, POB: "CapeTown"})
CREATE(Sangakkara:player {id:003, name: "Kumar Sangakkara", YOB: 1977, POB: "Matale"})
CREATE(Rohit:player {id:004, name: "Rohit Sharma", YOB: 1987, POB: "Nagpur"})
CREATE(Virat:player {id:005, name: "Virat Kohli", YOB: 1988, POB: "Delhi"})
Sau đây là một Truy vấn Cypher mẫu để tạo một ràng buộc DUY NHẤT trên id thuộc tính bằng cách sử dụng Neo4j.
CREATE CONSTRAINT ON (n:player) ASSERT n.id IS UNIQUE
Để thực hiện truy vấn trên, hãy thực hiện các bước sau:
Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.
Step 2 - Sao chép và dán truy vấn mong muốn trong dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.
Kết quả
Khi thực hiện, bạn sẽ nhận được kết quả sau.
xác minh
Bây giờ, hãy thử thêm một nút khác có giá trị id dư thừa. Ở đây, chúng tôi đang cố gắng tạo một nút có id002.
CREATE (Jadeja:player {id:002, name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})
Nếu bạn thực hiện truy vấn này, bạn sẽ nhận được thông báo lỗi như được hiển thị trong ảnh chụp màn hình sau.