Предполагая, что все ваши друзья также находятся в пользовательской таблице, вам понадобится таблица друзей, которая определяет простое отношение «один ко многим» - связывание пользовательской таблицы с самим собой.Так
User Table
UserID int identity not null
[other attribute fields]
Friends Table
UserIDLink1 int
UserIDLink2 int
[other attribute field]
Где и UserIDLink1, и UserIDLink2 являются внешними ключами в таблице Users.
Так, например, если у меня три пользователя
1 Joe
2 Bill
3 Jane
и Джо и ДжейнЕсли вы являетесь друзьями, то таблица «Друзья» будет содержать одну строку
1 3
Выше неявно предполагается, что если A - друг B, то B - друг A - если это не так, вы бывозможно, вы захотите переименовать UserIDLink1 и UserIDLink2 в UserID и FriendID или аналогичные - в этом случае у вас тоже будет возможность удвоить записи.
Также для двунаправленной конфигурации (A - друг B, если Bявляется другом A), вы должны настроить индексы в таблице Friends для (UserIDLink1, UserIDLink2) и (UserIDLink2, UserIDLink1), чтобы обеспечить всегда эффективный доступ, если мы искали друзей joe или друзей jane (если вы нене устанавливайте второй индекс, тогда первый запрос будет эффективным поиском индекса, но для второго потребуется полное сканирование таблицы).
Если бы ваши ссылки не были двунаправленными, то не было бы необходимости выяснять, кто является друзьями А, но вам, вероятно, все равно это потребуется, так как вам, вероятно, также понадобится выяснить, кто Б является другом.