Il sistema su cui sto lavorando ha un elenco di risorse che appartengono a diversi clienti dell'azienda. Questi dati vengono salvati su un database SQL.
Rimozione di dati irrilevanti, supponiamo che la tabella sia come segue:
+----------+------------+---------------+-------------+
| asset_id | asset_name | serial_number | customer_id |
+----------+------------+---------------+-------------+
Nell'applicazione, c'è una griglia di dati che visualizza un elenco di risorse, con il nome nella prima colonna e altri dati nelle altre colonne (il numero di serie non appare in questa griglia).
Si noti che non esiste una versione specializzata del software per ciascun cliente. I dati di questo cliente potrebbero essere visualizzati contemporaneamente ai dati di altri clienti.
Un nuovo cliente ha richiesto che, solo per i suoi prodotti,
- Il nome di ogni asset deve essere un numero casuale
- Nella griglia, il numero di serie dovrebbe apparire al posto del nome.
La soluzione più semplice (e più pulita) sarebbe quella di impostare il nome di ogni risorsa di loro come identica al numero seriale, soprattutto perché a quanto pare non interessa il nome (e non ci sono due asset che avranno il stesso numero), ma hanno completamente rifiutato tale accordo.
Il secondo modo più semplice (e molto meno sano, a mio modesto parere) per risolvere il problema sarebbe cambiare la query SQL che porta questi dati in modo che se l'ID cliente è uguale a quello specifico cliente, porterebbe il seriale numero nella posizione del nome, simile al seguente.
select [...], case when customer_id=1234 then serial_number else asset_name end as asset_name, [...]
Ovviamente, l'ingegnere che è in me sta urlando in agonia.
Ho pensato che potrebbe essere meglio avere una tabella "esigenze speciali" in cui l'ID cliente viene salvato insieme a un identificatore permanente (il nome dell'azienda potrebbe cambiare) e la query assicura di vedere se l'ID corrisponde a quello corrispondente identificatore, ma non sono sicuro che questo cambiamento ne varrà la pena.
Qualcuno può pensare a un modo migliore per risolvere questo problema?