Durante nuestra última reunión semanal, una persona que no tiene experiencia en administración de bases de datos planteó esta pregunta:
"¿Habría un escenario que justifique el almacenamiento de datos en línea (cadena) en lugar de varias líneas?"
Supongamos una tabla llamada countryStates
donde queremos almacenar los estados de un país; Usaré EE. UU. Para este ejemplo y no enumeraré todos los Estados en aras de la pereza.
Allí tendríamos dos columnas; uno llamó Country
y el otro llamó States
. Como se discutió aquí , y propuesto por la respuesta de @ srutzky , PK
será el código definido por ISO 3166-1 alpha-3 .
Nuestra mesa se vería así:
+---------+-----------------------+-------------------------------------------------------+
| Country | States | StateName |
+---------+-----------------------+-------------------------------------------------------+
| USA | AL, CA, FL,OH, NY, WY | Alabama, California, Florida, Ohio, New York, Wyoming |
+---------+-----------------------+-------------------------------------------------------+
Al hacerle esta misma pregunta a un desarrollador amigo, dijo que desde el punto de vista del tamaño del tráfico de datos, esto podría ser útil, pero no si necesitamos manipular estos datos. En este caso, tendría que haber una inteligencia sobre el código de la aplicación que podría transformar esta cadena en una lista (digamos que el software que tiene acceso a esta tabla necesita crear un cuadro combinado).
Llegamos a la conclusión de que este modelo no es muy útil, pero sospeché que podría haber una manera de hacerlo útil.
Lo que me gustaría preguntar es si alguno de ustedes ya vio, escuchó o hizo algo como esto de una manera que realmente funciona .
a;b;c
, utilice la parte delantera para analizar la cadena a continuación, obtener a
, b
,c
y llevar a cabo la ejecución de hacer algo con ellos, tal vez ?. Siente que podría satisfacer algún tipo de necesidad específica de esa manera ... Pensándolo bien, no. Siempre puede almacenar ID, unirse a sus tablas y crear una cadena concatenada que pueda enviar contenido a la FE ...