Dies ist wahrscheinlich viel zu veraltet, um nützlich zu sein, aber ich werde es posten, falls es anderen Leuten hilft!
Ich speichere ungerichtete Graphen wie Ihr zweites Beispiel und habe die Einschränkung, dass node_a kleiner als node_b sein muss. Dann platzieren Sie trivialerweise einen UNIQUE
Beschränkung auf das Paar und wissen, dass die Daten konsistent sind. Abfragen müssen etwas mehr Arbeit erfordern, indem node_a mit dem kleineren von {a,b} und node_b mit dem anderen Wert verglichen wird. PostgreSQL (die Datenbank, die ich am besten kenne) bietet GREATEST()
und LEAST()
Funktionen, die hier helfen.