Struttura del database per vari elementi

2

Sto costruendo un database SQLite per un'app per Android che contiene un elenco di elementi, ciascuno con caratteristiche diverse.

Alcune delle caratteristiche sono disponibili per tutti gli oggetti, alcuni sono rilevanti solo per un sottoinsieme di oggetti.

Ad esempio, tutti i miei articoli hanno un nome, una descrizione, un'immagine. Alcuni articoli avranno anche una data di scadenza, altri no. Alcuni avranno una dimensione, altri no. Ecc ...

Come dovrei costruire il mio Database, dato che non so quante caratteristiche potrebbero essere aggiunte in futuro, e sapendo che dovrei essere in grado di filtrare l'elenco di qualsiasi caratteristica?

    
posta XGouchet 18.06.2012 - 12:01
fonte

1 risposta

7

Devi considerare le particolari pressioni che si applicano alla tua situazione e decidere in base a ciò. Le verità generali sono:

  • Se metti tutti gli attributi possibili nella tua definizione di "elemento" come un campo, molti elementi avranno campi ridondanti, che potrebbero perdere spazio se sei molto limitato nello spazio.
  • Inoltre, l'introduzione di un nuovo attributo richiederà un aggiornamento dello schema del database anziché solo un aggiornamento del codice dell'applicazione.
  • D'altra parte, se si inseriscono gli attributi nella propria tabella, non si hanno questi problemi, ma si dovrà utilizzare un JOIN ogni volta che si filtrano gli elementi. Questo potrebbe richiedere più tempo del recupero e del filtraggio di elementi da una sola tabella.

Pertanto, senza sapere di più sulla tua situazione, possiamo solo dirti che stai considerando un compromesso tempo / spazio e, eventualmente, un compromesso di facilità di implementazione. Ma solo tu puoi sapere se quale di queste considerazioni ha più peso per il tuo progetto concreto.

    
risposta data 18.06.2012 - 12:25
fonte

Leggi altre domande sui tag