Был один проект, делают, я продолжил работать, где мы использовали Архитектора Предприятия для создания диаграмм UML который мы смещенный раундом (вперед - и перепроектированный) с исходным кодом C#.
Это (UML) не было хорошо в определении реализации каждого метода (использующий диаграммы последовательности), но все в порядке, определив подписи интерфейсов и классов (т.е. объявления, не определения, методов).
Это было полезно, потому что Вы могли иметь:
схема А, которая показывает, как группа классов взаимодействует (тогда как с исходным кодом Вы видите классы по одному)
Различные схемы с различными группами классов; и иногда тот же класс может появиться больше чем на одной схеме.
Это было для проекта, где это было требование для создания проектной документации с трассируемостью от вариантов использования хотя дизайн.
То есть, либо
SELECT DISTINCT a, b FROM pairs;
, либо
SELECT a, b FROM pairs GROUP BY a, b;
Это даст вам результат, который вы приводите в качестве примера:
SELECT DISTINCT a, b
FROM pairs