Можно сделать, к примеру, следующим образом.
Создать таблицу для клиентов и заполнить ее данными:
CREATE TABLE clients (id INTEGER NOT NULL);
INSERT INTO clients (id) VALUES (1), (2), (3), (4), (5);
Создать таблицу, в которой будут храниться группы клиентов:
CREATE TABLE clients_groups (
first_client_id INTEGER NOT NULL UNIQUE,
second_client_id INTEGER NOT NULL UNIQUE,
FOREIGN KEY (first_client_id) REFERENCES clients (id) ON DELETE CASCADE ON UPDATE NO ACTION,
FOREIGN KEY (second_client_id) REFERENCES clients (id) ON DELETE CASCADE ON UPDATE NO ACTION,
CHECK(first_client_id != second_client_id)
);
Теперь чтобы выбрать идентификатор свободного клиента (т.е., который не участвует ни в одной из групп) нужно выполнить запрос:
SELECT id FROM clients c
WHERE
c.id NOT IN(SELECT first_client_id FROM clients_groups) AND
c.id NOT IN(SELECT second_client_id FROM clients_groups)
ORDER BY RANDOM()
LIMIT 1;
И соответственно добавить новую группу из этих двух клиентов в таблицу clients_groups.