È probabile che questo sia troppo obsoleto per essere utile, ma posterò un post nel caso possa aiutare altre persone!
Memorizzo grafici non orientati come il tuo secondo esempio e ho un vincolo che node_a deve essere inferiore a node_b. Quindi inserisci banalmente un UNIQUE
vincolo sulla coppia e sapere che i dati sono coerenti. Le query devono lavorare un po' di più confrontando node_a con il più piccolo di {a,b} e node_b l'altro valore. PostgreSQL (il DB che conosco meglio) fornisce GREATEST()
e LEAST()
funzioni che aiutano qui.