Da quello che sono riuscito ad intuire ti posso dire che una struttura orizzontale non è mai una scelta azzeccata dal momento in cui potresti avere un numero alto di id_utenti.

Fossi in te farei cosi :

Tabella GRUPPI
CAMPI : id_GRUPPI, nome_GRUPPI

Tabella UTENTI
CAMPI : id_utente, nome_utente, id_GRUPPI

Tabella AGENTI
CAMPI : id_agente, nome_agente, id_GRUPPI

Stessa cosa per FORNITORI

Ma se le tre tabelle hanno la stessa struttura potresti fare cosi
Tabella UTENTI
CAMPI : id_utente, id_tipo_utente,nome_utente, id_GRUPPI
con :
tipo_utente = 1 -> Utenti
tipo_utente = 2 -> Agenti
tipo_utente = 3 -> Fornitori
cosi se vuoi aggiungere una nuova categoria (ovviamente solo se hanno bisogno delle stesse informazioni) lo fai senza fare modifiche alla struttura del DB.
Di più puoi passare facilmente un utente da "utenti" a "agenti" o a "fornitore" (solo se è previsto), se vuoi fare delle query hai una sola query da scrivere, etc...

Tabella TIPO_UTENTI
CAMPI : id_tipo_utente, nome_tipo