Quale relazione è più naturale?

4

Fai una breve domanda su come strutturare al meglio qualcosa per il mio progetto Java:

Sono un utente. Posso lavorare in uno o più posti. In quei luoghi di lavoro, ho uno o più ruoli. Per ciascuno di questi ruoli, lavoro un turno.

I due mi hanno suggerito:

I miei luoghi di lavoro hanno turni, i miei turni hanno esattamente 1 posizione (quale posizione ho lavorato quando ho lavorato il mio turno? varia di giorno in giorno ..)

o

I luoghi di lavoro hanno posizioni, ogni posizione ha turni

Penso che il 2 ° sia più naturale, ma continuiamo ad andare avanti e indietro / insicuri su ciò che ha più di un vantaggio sia ora che per il futuro. È difficile per me, perché posso discutere entrambi, credo?

Grazie!

    
posta NullHypothesis 11.03.2014 - 03:45
fonte

1 risposta

2

Potrebbe essere più sensato vedere come userete queste strutture nel vostro codice. Se si sta scrivendo un'app di pianificazione, quindi spostare i turni più in alto potrebbe avere più senso perché sono un artefatto di pianificazione. Se stai facendo un'app per le risorse umane, posizionare le posizioni più in alto potrebbe avere senso perché sei preoccupato di gestire le persone e i loro ruoli.

Un diagramma di relazione entità potrebbe essere d'aiuto, sebbene tu lo abbia già preparato.

Ma in realtà entrambe le cose. Un posto di lavoro "ha un" elenco di posizioni, ma anche "ha un" elenco di turni. I turni avranno informazioni aggiuntive, come l'ora di inizio e di fine. E uno spostamento "ha una" posizione che descrive cosa fare durante quel turno.

Un altro modo di pensarci è che uno spostamento "realizza" una posizione. Cioè, lo rende reale aggiungendo le informazioni di pianificazione.

Ecco un'altra alternativa: le posizioni e i turni sono entità di primo livello e "hanno un riferimento" a un luogo di lavoro.

Potresti scardinare un semplice diagramma Entità-Relazione e poi decidere quale delle relazioni (e in quale direzione) vuoi modellare nel tuo codice. Alcune delle relazioni su cui puoi fare affidamento su query e join per estrarre dal tuo database.

    
risposta data 11.03.2014 - 03:59
fonte

Leggi altre domande sui tag