Подумайте о том, чтобы иметь другую таблицу (например, обычный файл?), В которой хранятся ссылки. «Марк» и «Джон» - это друзья, если в этой таблице есть строка (ff?), Которая связывает «Марк» и «Джон». Я бы рекомендовал использовать какой-то индекс (вы знаете, как первичный ключ).
Предположим, у вас есть таблица пользователей (или простой файл, что угодно, не имеет значения , что много), который содержит пользователей и некоторые данные, это выглядит так:
UID | Username | Hobbies
------------------------
1 | Mark | Swimming, Sailing, Skiing
2 | John | Biking, Paragliding
3 | Suzie | Flying, Skiing
А у вас есть таблица других друзей (опять же, простой файл, что угодно ...):
Pair ID | A | B
----------------
1 | 1 | 2
2 | 2 | 3
Мы закодировали в этой таблице друзей, что Марк и Джон - друзья, и что Джон и Сьюзи - друзья, но при отсутствии отношений 1 и 3 мы знаем, что Марк и Сьюзи не друзья (по крайней мере, согласно наши записи).
Обратите внимание, что если вы хотите получить всех друзей Джона, вы должны найти все строки в вашей таблице (или файле), которые имеют UID Джона (здесь = 2), в столбце A или столбце B.