Самый правильный способ сделать это - иметь таблицу членов (очевидно) и вторую таблицу отношений друзей.
Вы никогда не должны когда-либо хранить внешние ключи в такой строке. В чем смысл? Вы не можете присоединиться к ним, сортировать по ним, группировать по ним или любым другим вещам, которые оправдывают наличие реляционной базы данных.
Если предположить, что таблица Member выглядит следующим образом:
MemberID int Primary Key
Name varchar(100) Not null
--etc
Тогда ваша таблица дружбы должна выглядеть так:
Member1ID int Foreign Key -> Member.MemberID
Member2ID int Foreign Key -> Member.MemberID
Created datetime Not Null
--etc
Затем вы можете объединить столы, чтобы составить список друзей
SELECT m.*
FROM Member m
RIGHT JOIN Friendship f ON f.Member2ID = m.MemberID
WHERE f.MemberID = @MemberID
(Это именно синтаксис SQL Server, но я думаю, что он довольно близок к MySQL. @MemberID
- это параметр)
Это всегда будет быстрее, чем разделение строки и выполнение 30 дополнительных SQL-запросов для извлечения соответствующих данных.