Таблица {relations_id, first_user, second_user} содержит повторяющуюся группу .
Просто удалите одну из них (что делает Relations_id неуникальным) и добавьте суррогатный ключ (или добавьтеидентификатор пользователя для первичного ключа).
CREATE TABLE relationships
( id INTEGER NOT NULL PRIMARY KEY
, relationship_id INTEGER NOT NULL
, user_id INTEGER NOT NULL REFERENCES users(user_id)
);
Было бы неплохо выполнить домашнее задание, чтобы попытаться сгенерировать ограничения для этой конструкции.
Другой способ (для бинарных отношений, таких как браки) состоит вссылка «значимое другое» в таблице пользователей:
CREATE TABLE lusers
( luser_id INTEGER NOT NULL PRIMARY KEY
, magnificent_other INTEGER REFERENCES lusers (luser_id)
...
);
В качестве побочного эффекта это также сделает невозможным двоеженство.Опять же: хорошее домашнее задание для реализации ограничений.