Sto sviluppando 3-4 programmi interdipendenti. Chiamali foo bar baz e auth. Voglio che siano indipendenti l'uno dall'altro. Immagina se dovessi dare in licenza ciascun programma ad altre società. Alcune aziende potrebbero volere foo e bar, altre potrebbero semplicemente voler baz, ecc. Sembra anche una buona pratica mantenere anche l'auth indipendente.
Contesto: auth si sta prendendo cura dell'autenticazione per tutti i sistemi. La tabella utenti principale in auth ha user_id, email, password, first, last
foo ha anche una tabella utenti con campi specifici per l'applicazione: user_id, role_id, ecc.
Ogni sistema ha il proprio database. In passato ho creato una chiave esterna da ogni applicazione all'author db. Ho rimosso i permessi di aggiornamento dagli altri db ma ho concesso l'accesso selezionato ad alcuni campi rilevanti. Questa mi sembra una pessima soluzione perché crea una stretta dipendenza, ma mi ha permesso di normalizzare il db in modo da non dover memorizzare il nome e l'email degli utenti nei database foo, bar o baz.
Sarebbe meglio memorizzare le informazioni in tutti i database? O sarebbe meglio memorizzare l'id di Auth in foo bar e baz e usare un'API per ottenere le informazioni dell'utente usando authId?
Allo stesso modo, potrei avere clienti in tutti e 3 i sistemi. Certo, sembra dannoso creare una dipendenza in un'author db, ma che dire del dbs del cliente su tutti e 3?
O è la soluzione migliore per avere un database centrale. Una tabella utenti.
Altri suggerimenti?