Това вероятно ще бъде твърде остаряло, за да бъде полезно, но ще публикувам, в случай че помага на други хора!
Съхранявам ненасочени графики като втория ви пример и имам ограничение, че node_a трябва да бъде по-малко от node_b. След това тривиално поставяте UNIQUE
ограничение на двойката и знайте, че данните са последователни. Заявките трябва да работят малко повече, като сравняват node_a с по-малката от {a,b} и node_b с другата стойност. PostgreSQL (БД, която познавам най-добре) предоставя GREATEST()
и LEAST()
функции, които помагат тук.