Usando l'ID del record della tabella come nome dell'immagine

1

Ho una tabella in cui ogni record ha un'immagine corrispondente (diciamo che la tabella è users e l'immagine è l'immagine del profilo. Sto salvando le immagini nel file system.

Sto pensando di usare l'ID del record della tabella come nome dell'immagine, piuttosto che avere una colonna separata nella tabella per il nome dell'immagine. In questo modo posso trovare l'immagine del profilo dall'ID utente.

Questo è un buon approccio usato frequentemente? Ci sono degli inconvenienti nel fare questo?

    
posta Can't Tell 13.07.2016 - 06:44
fonte

2 risposte

1

Questa non è una buona idea, perché l'ID utente è probabilmente una chiave surrogata generata da una sequenza (se si utilizza Oracle) o un valore IDENTITY (utilizzato da un certo numero di tecnologie di database).

Ad esempio, non è garantito che le sequenze in Oracle forniscano gli stessi valori in database diversi, poiché un intervallo di valori viene memorizzato nella cache. Inoltre, l'ordine in cui si immettono utenti in diversi database modifica la propria chiave primaria. Quindi l'ID utente = 3 nel tuo database Dev potrebbe essere il tuo utente, ma l'ID utente = 3 nel database di produzione potrebbe essere me, perché ho creato il mio utente o registrato prima di te.

Scegli invece di utilizzare un valore univoco per ogni utente che dovrebbe essere uguale in ogni database o ambiente applicativo, come il nome utente.

Diciamo che mi registro come "abc123" in Dev. La mia immagine del profilo viene memorizzata come "abc123.jpg" in alcune cartelle. Se mi registro in Production come utente "abc123" l'immagine utilizzata in Dev funzionerà anche su Production.

    
risposta data 13.07.2016 - 19:01
fonte
2

Usando l'id come nome del file funziona bene per la maggior parte delle applicazioni. Questo presuppone che tu stia elaborando l'immagine (ridimensionando, ritagliando) e salvando ogni immagine come lo stesso formato di file. Altrimenti, vorrai anche memorizzare il tipo di file nella tabella.

Detto questo, un paio dei possibili inconvenienti di cui essere a conoscenza:

  • Dovrai sovrascrivere i file esistenti quando l'utente aggiorna il proprio avatar. Se questo è un problema o meno dipende da come stai memorizzando i file.
  • Se utilizzi l'id come nome del file, perderai alcune informazioni sul tuo sistema

Mi piace avere una tabella separata per i "caricamenti" che tiene traccia dei singoli file che vengono caricati dall'utente finale. Quindi assegno l'id del file caricato come ID avatar. Puoi anche assegnare a ciascun file caricato un valore hash da utilizzare durante la generazione di URL, in modo che il file possa essere referenziato senza che venga visualizzato un 'id'.

    
risposta data 13.07.2016 - 19:55
fonte

Leggi altre domande sui tag