Bueno, tratemos de mantener esto simple. Básicamente, está tratando de encontrar una forma de conectar a dos usuarios.
Dado que estoy tratando de mantener las cosas simples, y definitivamente no implica que esta sea la mejor manera de hacerlo, creo que la más fácil La forma de hacerlo es crear una nueva tabla (users_friends) con los siguientes campos:(user_id) y (friend_id).
Bueno, digamos que mi ID de usuario es 5. Tu ID de usuario es 10.
Quiero agregarte como mi amigo, por lo tanto, agregaría una entrada a esa tabla recién creada con los siguientes valores:id_usuario =5, id_amigo =10.
Entonces, supongamos que desea mostrar a todos mis amigos, podría ejecutar una consulta como:
SELECT * FROM `users` WHERE `user_id` IN ( SELECT `friend_id` FROM `users_friends` WHERE `user_id` = '5' );
Efectivamente, eliminar a un amigo es fácil, todo lo que tiene que hacer es eliminar la entrada de la tabla recién creada...
DELETE FROM `users_friends` WHERE `user_id` = '5' AND `friend_id` = '10';
Y puf, de repente ya no eres mi amigo;)
Así que sí, estos son los conceptos básicos. Probaría esta solución antes de pasar a una solución que le permita más flexibilidad.