Se stai misurando millisecondi e l'IO del disco del tuo sistema non è estremamente lento, l'opzione 2 produrrebbe prestazioni migliori. Ma , stiamo parlando di un guadagno trascurabile nei tempi di esecuzione. Dal momento che interrogherai già il DB per ottenere la notizia, sarebbe altamente ottimizzato per ottenere solo il nome della categoria allo stesso tempo. Aggiungerei una tabella di mappatura di id-nome-categoria a nomi-categoria . E unisciti a questo quando ricevi notizie.
Da un punto di vista della flessibilità e dal punto di vista dell'eliminazione di quante più possibili fonti di errore, seguirei anche la mia idea di cui sopra. Dal momento che aggiunge flessibilità al tuo sistema e mantiene tutti i tuoi dati in un unico punto. La modifica del nome di una categoria richiederebbe la modifica di una colonna nel database invece di modificare un file di configurazione php o, se è stata utilizzata l'opzione 1, aggiornare ogni singolo record di notizie.
Quindi il mio miglior consiglio, aggiungi una tabella con category-name-id a nomi-categoria mappature e quindi fare in modo che le notizie contengano l'id della categoria a cui appartengono.
Per le prestazioni potresti quindi memorizzare nella cache i dati che recuperi sulle categorie esistenti e altri dati in modo da non dover eseguire continuamente il polling del DB per quelle informazioni.
Per esempio. Potresti, invece di unirti, ottenere tutte le categorie dalla tabella delle categorie che ho descritto sopra. Memorizzatelo nella cache nell'applicazione e ottenetelo solo una volta che la cache è stata invalidata. cioè si verifica un timeout o i dati nel db vengono manipolati.