Ho un'applicazione per album di foto personali in cui carica le mie foto. Tuttavia, ora vorrei estenderlo anche con i video e non sono sicuro di come eseguire correttamente questa estensione.
Il design attuale è composto da 2 tabelle - Albums
che contengono informazioni sugli album ( name
, dateCreated
, ecc.) e Photos
tabella, dove ogni record fa riferimento a uno degli album e contiene informazioni sull'immagine ( fileDestination
, name
, description
, photoRotation
, position
ecc.). Nota che ogni record contiene anche informazioni sull'ordine / posizione di questa foto all'interno dell'album.
Ho 3 proposte su come l'estensione potrebbe essere fatta
-
Aggiungi "tipo" archiviato : la soluzione più semplice. Aggiungerei semplicemente un nuovo campo che memorizza il tipo di foto / oggetto che il record rappresenta. Lo svantaggio è che si sente "sporco" poiché, ad esempio, il campo
rotation
non ha senso per un video (consento la rotazione delle foto, ma non i video). In futuro dovrei voler includere nuovi tipi di elementi di album, potrebbero esserci più campi necessari per un articolo che non sarebbero quindi necessari per es. le foto. -
Crea tabella "Video" - Creazione di una tabella separata per i video. Il problema con questa soluzione è che ha un design quasi identico alla tabella Foto (manca solo il campo "rotazione") e quando si riposizionano gli elementi all'interno dell'album, dovrei riordinare gli elementi in 2 tabelle. Per quanto riguarda il riposizionamento, anche questo si ridimensiona male e non è "a prova di futuro" poiché aggiungere
n
nuove tabelle significa riordinare gli elementi inn
nuove tabelle. -
Crea tabella "AlbumItem" : la tabella contiene i campi
Id, Position, AlbumId
. Il vantaggio di questa soluzione è che in futuro potrò aggiungere tanti nuovi tipi di elementi di album (sotto forma di nuove tabelle) come vorrei. Lo svantaggio è che devo migrare la configurazione corrente con tutte le foto a questo nuovo design.
Quale modello ritieni sia il più appropriato (teoricamente e / o praticamente)?
Grazie