Uhm....
secondo me si tratta di implementare tabelle di relazione.
COn le tabelle di relazione(molti a molti) in questo caso puoi tracciare tutto, e nel caso collegare per tipologia tracciare data e se entrambi gli utenti hanno confermato.
esempio
tabella utenti
id
//DATI VARI
tabella relazioni_utenti
id_utente1
id_utente2
tipo_relazione
data_creazione
ultima_modifica
stato
chiave primaria : id_utente1,id_utente2,tipo_relazione
COsi' potresti tracciare tutto quello che ti pare delle relazioni tra utenti.
tipo_relazione mettilo int :
0- amicizia
1- lavoro
2- gruppo
// ETC... nel caso puoi aggiungere anche una colonna per tracciare i gruppi
lo stato
001- bloccata da user 1
002- bloccata da user 2
010- richiesta contatto da u1 a u2
011- attivata (ue ha accettato)
etc.....