Durante nossa última reunião semanal, uma pessoa que não tem experiência em administração de banco de dados levantou esta questão:
"Haveria um cenário que justificasse o armazenamento de dados em linha (string) em vez de várias linhas?"
Vamos assumir uma tabela chamada countryStates
onde queremos armazenar os estados de um país; Usarei os EUA neste exemplo e não listarei todos os Estados por preguiça.
Lá teríamos duas colunas; um chamado Country
e o outro chamado States
. Conforme discutido aqui e proposto pela resposta de @ srutzky , PK
será o código definido pela ISO 3166-1 alfa-3 .
Nossa tabela ficaria assim:
+---------+-----------------------+-------------------------------------------------------+
| Country | States | StateName |
+---------+-----------------------+-------------------------------------------------------+
| USA | AL, CA, FL,OH, NY, WY | Alabama, California, Florida, Ohio, New York, Wyoming |
+---------+-----------------------+-------------------------------------------------------+
Ao fazer a mesma pergunta a um desenvolvedor amigo, ele disse que, do ponto de vista do tamanho do tráfego de dados, isso pode ser útil, mas não se precisarmos manipular esses dados. Nesse caso, teria que haver uma inteligência no código do aplicativo que poderia transformar essa string em uma lista (digamos que o software que tem acesso a esta tabela precise criar uma caixa de combinação).
Concluímos que esse modelo não é muito útil, mas suspeitei que pudesse haver uma maneira de torná-lo útil.
O que eu gostaria de perguntar é se algum de vocês já viu, ouviu ou fez algo assim de uma maneira que realmente funciona .
a;b;c
, use o front end para analisar sua string e a
, em seguida b
, c
execute a execução fazendo algo com eles, talvez? Sinta que pode atender a algum tipo de necessidade específica dessa maneira ... Pensando bem, não. Você sempre pode armazenar IDs, Junte-se a suas tabelas e criar uma string concatenada que pode enviar conteúdo para o FE ...