En el modelo relacional no existen los campos multivaluados, es decir, columnas donde se almacenan más de un valor correspondientes a algún concepto. En ese sentido
no se debe usar un campo para guardar los nombres de diversos amigos de una persona, ya que para eso existen las relaciones de cardinalidad N:N.
Cuando tienes una relación entre dos entidades tal que responda a la frase
"X puede tener muchos Y, y cada Y puede tener a su vez muchos X", eso implica que existe una relación N:N (muchos a muchos) y por definición del modelo, esa relación determina la existencia de
otra tabla que administre esa relación. Siempre.
En tu caso, lo que existe es una relación de "un usuario tiene muchos amigos y cada amigo a su vez puede tener muchos amigos". Eso implica una relación N:N de la tabla usuarios consigo misma. En esa tabla, la PK de cada usuario se combina, en diferentes registros, con la PK que corresponde al amigo en cuestión, y luego la
búsqueda de los amigos de un usuario se hace simplemente con una consulta.
El diagrama básico de Twitter y de diferentes redes sociales es mas o menos (tomado de
Database Answers):
En este diagrama puedes ver que los usuarios están en la tabla "My", la relación de amistad está determinada por la tabla "Contacts", El tipo de relación con esa persona está en "Contact_Role", y los mensajes de uno a otro en "My_Messages".
Ese es el esquema, cada red puede tener detalles diferentes, pero la estructura es mas o menos similar.