C'est probablement trop obsolète pour être utile, mais je posterai au cas où ça aiderait d'autres personnes !
Je stocke des graphiques non orientés comme votre deuxième exemple et j'ai une contrainte selon laquelle node_a doit être inférieur à node_b. Vous placez alors trivialement un UNIQUE
contrainte sur la paire et savoir que les données sont cohérentes. Les requêtes doivent travailler un peu plus en comparant node_a au plus petit de {a,b} et node_b l'autre valeur. PostgreSQL (la base de données que je connais le mieux) fournit GREATEST()
et LEAST()
fonctions qui aident ici.