Estensione dell'app per album di foto con video

0

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

  1. 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.
  2. 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 in n nuove tabelle.
  3. 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

    
posta leopik 08.08.2018 - 13:57
fonte

1 risposta

1

Fondamentalmente hai

Item
    AlbumId

Photo : Item
    PictureFile

Video : Item
    VideoFile

E il tuo database dovrebbe riflettere questo. L'unica domanda è davvero che i video abbiano tutti gli stessi campi di Foto. In caso contrario:

table Item
    Id
    ItemType -- Photo or Video
    AlbumId

table Photo
    Id --> Item.Id

table Video
    Id --> Item.Id
    
risposta data 08.08.2018 - 15:21
fonte