Вам нужно много-много отношений - у вас может быть 0 или более друзей, у каждого друга может быть 0 или более друзей.Наиболее распространенный подход - связать обоих пользователей в дополнительной таблице.Вам нужна просто дополнительная таблица БД: create table Relationships(
user1 int not null references Users(id),
user2 int not null references Users(id)
);
Вы определенно хотите создать индексы для user1 и user2.
Я думаю, вам не нужен столбец ID.Еще одна вещь, которую вы должны знать о том, что если я твой друг, ты мой друг.Когда вы вставляете ([u1], [u2]) в таблицу отношений, сначала проверьте, есть ли связь ([u1], [u2]) или ([u1], [u2]).Если есть такое отношение, не вставляйте другое, это может нарушить вашу логику.
Если вам нужно какое-то подтверждение, как в большинстве популярных социальных сетей, вы должны создать другую таблицу PendingRelationsihps, которая будет иметь ту же схему БД, что и отношение.После подтверждения вы перенесете запись из отношений в ожидании отношений в отношения.
Надеюсь, это вам поможет.