Il modo migliore per rinominare i nomi di campi univoci esistenti nel database?

3

Ho una tabella di database che contiene id, filename, userId

  • id è un identificativo univoco
  • filename dovrebbe anche essere univoco
  • La tabella
  • potrebbe contenere > 10000 record

When a user uploads a file it should be entered in database with given rules:

  1. Se non ci sono record con lo stesso nome file, dovrebbe essere aggiunto come è (Es. foobar.pdf )
  2. Se c'è record con lo stesso nome file , dovrebbe essere aggiunto come uploadName (2) .ext ( foobar (2) .pdf )
  3. Se ci sono n record con lo stesso nome file di base ( foobar ), dovrebbe essere aggiunto come uploadName (n + 1) .ext ( foobar (20 ) .pdf )
  4. Ora se foobar (2) .pdf è caricato, dovrebbe essere aggiunto come foobar (2) (2) .pdf & così via

This pattern needs to be followed because the file is already being uploaded at client side using ajax before sending the details to server and the file hosting service follows the above rules to name the files.

La mia soluzione:

  1. conserva un file che contiene tutti i nomi e il numero di volte è successo.
  2. se viene inserito un nome file esistente nel file, aumenta il conteggio delle occorrenze e viene generato un nuovo nome, altrimenti aggiungilo al file
  3. se il nuovo nome generato è nel database, aggiungilo al file e genera nuovo nome
posta Rajdeep Siddhapura 30.10.2013 - 00:52
fonte

1 risposta

2

Se il nome file originale non è significativo, fai come gli altri hanno suggerito e genera un nome sintetico: un UUID sarebbe un buon candidato o userà una sequenza come la tua chiave primaria. Se il nome è significativo, cioè lo si desidera archiviare, aggiungere semplicemente una colonna per consentire all'utente di distinguere tra duplicati possibili e significativi e di ridurre / eliminare i duplicati. Ad esempio, un timestamp che indica quando il file è stato caricato.

Non mi è del tutto chiaro cosa stai chiedendo - il tuo titolo ha una domanda, ma il tuo post non lo fa. Se stai cercando di aggiornare il nome della colonna di un tavolo, guarda in alter table - è semplice. Se stai cercando come massaggiare i dati esistenti, vedi sopra. Altrimenti dovrai riformulare la richiesta in modo che risulti un po 'più chiara.

Ad ogni modo, spero che questo aiuti!

    
risposta data 29.01.2014 - 19:02
fonte

Leggi altre domande sui tag