To prawdopodobnie jest zbyt nieaktualne, aby było przydatne, ale opublikuję, jeśli pomoże innym!
Przechowuję nieskierowane wykresy, takie jak twój drugi przykład, i mam ograniczenie, że node_a musi być mniejsze niż node_b. Następnie trywialnie umieszczasz UNIQUE
ograniczenie na parę i wiedzieć, że dane są spójne. Zapytania wymagają nieco więcej pracy, porównując node_a z mniejszą z {a,b} i node_b z inną wartością. PostgreSQL (baza danych, którą znam najlepiej) zapewnia GREATEST()
i LEAST()
funkcje, które tu pomagają.