Recentemente, comecei a trabalhar em algum sistema legado. As pessoas que o desenvolveram tiveram a ideia de armazenar a lista de strings em um único campo da tabela do banco de dados. Vamos dizer que é um identificador para objeto que não possui nenhuma representação nem dados no banco de dados. O alcance desses identificadores será relativamente pequeno na produção.
Por outro lado, minhas intuições e o "bom gosto do design" me dizem que ele deve ser representado em uma tabela separada (semelhante a uma tabela usada para representar relações muitos-para-muitos).
A abordagem deles é realmente ruim e seria melhor iniciar uma refatoração? Se sim, quais as más consequências que o design original pode causar no futuro? Existem princípios de design relacional que explicam essa abordagem?
Edite na resposta para comentários:
Como suponho, eles não usaram essa abordagem para resolver um problema específico, como a estrutura hierárquica de uma maneira complicada. O cenário mais provável era que eles estavam simplesmente trabalhando sob pressão de tempo e precisavam implementar novos recursos o mais rápido possível.
Estou certo de que anteriormente o campo representava um valor único. Eles implementariam o recurso para armazenar mais de um valor e tentaram evitar migrações de banco de dados.