Cosi' ad una prima occhiata direi che ti manca una tabella.

Siccome molti utenti potrebbero avere molti amici e molti amici potrebbero esserlo di piu' utenti andresti in una condizione abbastanza difficile da gestire di molti a molti.

Quindi direi una tabella di unione utenti <-> amici. tre semplici campi:

id - id_utente - id_amico

con una semplice join troverai tutti gli amici del singolo utente e viceversa.