Recentemente, ho iniziato a lavorare su un sistema legacy. Le persone che lo hanno sviluppato, hanno avuto l'idea di memorizzare l'elenco delle stringhe in un singolo campo della tabella del database. Diciamo che è un identificatore per l'oggetto che non ha alcuna rappresentazione né dati nel database. L'intervallo di tali identificatori sarà relativamente piccolo nella produzione.
D'altra parte, le mie intuizioni e il mio "buon design" mi dicono che dovrebbe essere rappresentato in una tabella separata (simile a una tabella usata per rappresentare relazioni molti-a-molti).
Il loro approccio è davvero pessimo e sarebbe meglio iniziare un refactoring? Se sì, quali sono le cattive conseguenze che il design originale può causare in futuro? Ci sono dei principi di progettazione relazionale che spiegano questo approccio?
Modifica in risposta per i commenti:
Come suppongo, non hanno usato questo approccio per risolvere alcuni problemi specifici come la strutturazione gerarchica in un modo complicato. Lo scenario più probabile era che stavano semplicemente lavorando sotto la pressione del tempo e avevano bisogno di implementare nuove funzionalità il più rapidamente possibile.
Sono sicuro che in precedenza il campo rappresentava un singolo valore. Avrebbero implementato la funzione per archiviare più di un valore e cercato di evitare le migrazioni del database.