Điều này có thể đã quá lỗi thời để hữu ích, nhưng tôi sẽ đăng nếu nó giúp ích cho người khác!
Tôi lưu trữ các đồ thị vô hướng như ví dụ thứ hai của bạn và có một ràng buộc rằng node_a phải nhỏ hơn node_b. Sau đó, bạn nhẹ nhàng đặt một UNIQUE
ràng buộc đối với cặp và biết rằng dữ liệu là nhất quán. Các truy vấn phải làm việc nhiều hơn một chút bằng cách so sánh node_a với giá trị nhỏ hơn của {a, b} và node_b của giá trị còn lại. PostgreSQL (DB mà tôi biết rõ nhất) cung cấp GREATEST()
và LEAST()
các chức năng trợ giúp ở đây.