Qual è l'approccio comune ai database dei modelli di componenti?

5

Il mio progetto:

Ho dei dipendenti che devono consultare una checklist quando incontrano un'anatra, un gatto e un umano. Nella nostra attività, abbiamo un numero stabilito di anatre, gatti e umani che entrano ed escono dalle nostre porte. Quando entrano, dobbiamo verificare che tutte queste funzionalità siano presenti.

Le funzionalità:

Eccoilnostroattualedesigndeldatabase:

Approccio attuale:

  1. Quando un animale entra nel nostro edificio, otteniamo il loro documento d'identità.
  2. Il loro ID ci dà il loro record di animali.
  3. Creiamo un nuovo record "check_in" per l'animale
  4. Sotto il record check_in, utilizziamo il modello fornito dalla relazione animal_type- > feature_type
    • Ad esempio: Sam l'anatra avrà un nuovo check_in creato con penne, ali, becco, piedi e occhi separati, check_in_feature.
  5. Esaminiamo il processo e impostiamo feature_is_present su true o false per ciascuna delle funzioni
  6. Al termine, li controlliamo e la voce check_in è completa

La mia domanda:

In pratica, questo schema relazionale è molto difficile da lavorare. Lo abbiamo usato per anni e siamo costantemente rallentati quando guardiamo le informazioni a causa delle strane aderenze che questo design tende a richiedere. Non ho dubbi che questo è un problema noto con una soluzione più elegante rispetto all'utilizzo di questo approccio ingenuo. Qualcuno conosce un modo migliore per strutturare questo, o un approccio migliore che sarà più facile ed efficiente con cui lavorare?

EDIT: Appena realizzato ci sono artefatti dal nostro sistema attuale nelle sezioni delle proprietà di navigazione, basta ignorarli. Non voglio ricreare le immagini se posso evitarlo

    
posta justausr 08.02.2013 - 17:04
fonte

1 risposta

1

Se il semplice fatto di avere più join rallenta le tue query, allora il tuo db ha bisogno di essere ottimizzato o devi passare a un RDBMS migliore in grado di gestire meglio i tuoi join. Non vedo nulla di sbagliato nel tuo schema.

Supponendo che il tuo DB supporti ciò, il mio suggerimento è di esaminare attentamente i piani di query per le tue query e cercare casi in cui nuovi indici potrebbero risolvere i tuoi problemi. Questa funzione è estremamente dipendente da db.

Finalmente qualcosa che manca nella discussione sta segnalando le esigenze. Questo è qualcosa che può e frequentemente esclude qualsiasi soluzione non relazionale.

    
risposta data 20.02.2013 - 03:09
fonte

Leggi altre domande sui tag