Devo progettare un database in un'applicazione Rails, dove ho utenti (che possono accedere), aziende e lavori.
Ogni utente appartiene a un'azienda e ogni lavoro appartiene a un'azienda, quindi quando un utente effettua l'accesso, l'applicazione cerca la società e gli mostra il lavoro ogni assegnato alla sua azienda. Il diagramma è qui:
Tuttavia,c'èun'altraspecifica:inogniazienda,c'èunamministratoreemoltilavoratori.Solol'amministratorepuòvedereilognilavoroassegnatoaogniutentedellasuaazienda,mentreilavoratoripossonovederesoloillavorocheglièstatoassegnato:unlavoratorenonpuòvisualizzareillavoroassegnatoalsuocollega.
Eccolagrandedomanda:PossoaggiungereunnuovocampoallatabellaJobs,unachiaveesternachefariferimentoallatabellautente,cosìpossoteneretracciadiognilavorocheappartieneaunasocietàeancheall'utentecheèassegnatoaunlavorospecifico?Sochesitrattadiunriferimentocircolare,enonèunabuonapratica,manonriescoavederealcunaaltrasoluzioneaquestoproblema,enonsonoabbastanzasicurodeiproblemichepotreiottenereseseguoquestoapproccio.Eccoildiagrammadiquesta"soluzione" circolare.
EDIT#1
Molticolleghihannosuggeritomodimoltointelligentiperfornireruoli(amministratore,utente,manager,ecc.)agliutenti.Iommitedperchélamiaprincipalepreoccupazioneèlarelazionetraaziende,postidilavoroeutenti.Adognimodo,peresserepiùchiari,hoaggiornatoleimmaginiperincorporarelatabella"ruoli".