Sto costruendo un software in cui ho utenti responsabili della gestione dei contratti. Ogni utente può vedere solo i contratti di cui è responsabile.
Ora, voglio implementare una funzionalità di condivisione in cui un utente può decidere di condividere alcuni dettagli del contratto con un altro utente, quindi l'altro utente può ora visualizzare nel suo elenco di contratti un contratto condiviso.
Ma prima, voglio assicurarmi di implementarlo correttamente in termini di database.
Quindi al momento, ho il seguente riguardo alla relazione tra utenti e contratti:
utente (1) gestisce i contratti (1 .. *)
E per implementare la funzionalità di condivisione, ho aggiunto quanto segue:
utente (0 .. *) può vedere i contratti (0 .. *)
Che ha provocato una nuova tabella che ho chiamato SharedContracts. Questa tabella memorizzerà l'ID utente dell'utente che ora avrà accesso al contratto e al contrattoID del contratto condiviso.
Quindi quello che succederà ora è che ogni volta che l'utente A decide di condividere i dettagli del suo contratto con l'utente B, la tabella SharedContracts verrà utilizzata per memorizzare questi dati.
E al prossimo accesso dell'utente B, il sistema controllerà se ha un contratto condiviso interrogando la tabella SharedContracts. Il sistema selezionerà tutti gli ID contratto associati al suo ID utente.
Voglio sapere se questo è il modo corretto di implementare una funzionalità come questa? C'è qualche altro modo? Posso incorrere in alcuni problemi se rimane così?