Ini mungkin terlalu ketinggalan zaman untuk berguna, tetapi saya akan mempostingnya jika itu membantu orang lain!
Saya menyimpan grafik tidak terarah seperti contoh kedua Anda dan memiliki batasan bahwa node_a harus kurang dari node_b. Anda kemudian dengan mudah menempatkan UNIQUE
kendala pada pasangan dan tahu bahwa datanya konsisten. Kueri harus bekerja sedikit lebih banyak dengan membandingkan node_a dengan yang lebih kecil dari {a,b} dan node_b nilai lainnya. PostgreSQL (DB yang paling saya kenal) menyediakan GREATEST()
dan LEAST()
fungsi yang membantu di sini.