Come gestisco più relazioni da una prospettiva di progettazione software?

2

Come faccio a gestire i progetti quando ci sono due relazioni fondamentali che devono essere mantenute? L'esempio più ovvio che posso pensare sarebbe una ditta che fa un tipo di consulenza basata sulla posizione.

Mi stavo rompendo il cervello su come spiegarlo, in sostanza, questa è la versione bullet point:

  • Ogni client che ha più sedi
  • Esistono diversi progetti relativi a posizioni specifiche del cliente
  • Sono disponibili risultati per questi progetti
    • Ogni deliverable il mio si riferisce solo a poche posizioni in cui il progetto è collegato a

Il sistema sembra andare in pezzi quando si sovrappongono queste due relazioni principali; un cliente con più sedi che hanno progetti assegnati a loro e deliverable che rimandano a posizioni individuali. Finisci con troppe relazioni molti-a-molti che sono difficili da gestire.

Il problema è quindi visualizzare questo in un sistema. Hai un record cliente con sottodirectory di posizione. Ad ogni record di posizione sono associati numerosi record di progetto. Ogni record del progetto ha record consegnabili, quindi tali deliverable si riferiscono a specifici loation.

Mi rendo conto che questo sembra un po 'esterico, ma c'è un modo per semplificare questo in modo che sia visivamente comprensibile?

    
posta toolshed 04.04.2013 - 06:33
fonte

1 risposta

1

Sembra una struttura di dati relazionali abbastanza semplice.

client <- location; or
client <- clientLocation -> location

project <- location; or
project <- projectLocation -> location

deliverable <- location; or
deliverable <- project; or
deliverable <- location
            <- project

È vero che se hai un numero di molte-molte relazioni finirai con altre tabelle, ma stiamo parlando solo di alcune entità.

Non è vero dire che

The system seems to break down when you overlay these two main relationships

Il sistema funzionerà bene se descrive correttamente le relazioni. Se diventa troppo complesso da visualizzare, il modo corretto di procedere è suddividere la visualizzazione in fasi o livelli.

Ad esempio, è necessario visualizzare i dati da più client contemporaneamente? In caso contrario, è sufficiente disporre di un filtro iniziale che limiti i dati rilevanti a un singolo client. In alternativa potresti essere in grado di limitare a una singola posizione o progetto.

La chiave sta nel dare priorità al processo di visualizzazione per quanto riguarda l'importanza e la progressione logica. per esempio. Un utente seleziona prima un cliente, quindi seleziona i progetti pertinenti e infine ordina per posizione.

    
risposta data 09.04.2013 - 06:41
fonte

Leggi altre domande sui tag