Sí, hay una forma más eficiente de almacenar las etiquetas para un usuario determinado:
Columnas: ID_user, ID_tag_list
Fila: 1, 1,2,3
Fila: 2, 3,4
¿Por qué no todos hacen esto? Porque solo es bueno para consultar etiquetas para un usuario determinado.
- Mientras se realiza PCA en 96 variables, la contribución de varianza expandida de cada componente es muy inferior a 1-1.5%. ¿Qué dice sobre los datos?
- ¿Es posible obtener una 'posición cuantitativa' o trabajar en 'análisis de datos' después de hacer un trabajo de ingeniero de software durante varios años?
- ¿Qué es el suavizado de datos y cómo puedo usarlo en ciencia de datos / minería?
- ¿Es Python el lenguaje de programación más importante para el análisis de datos?
- ¿Vale la pena un Master en Business Analytics para convertirse en un Data Scientist o los bootcamps son tan efectivos para conseguir un trabajo para alguien sin experiencia?
Es posible que a veces también necesite consultar a los usuarios etiquetados con una etiqueta determinada. Es difícil buscar valores que tengan la posibilidad de aparecer en el medio de una lista como Id_tag_list. Un índice convencional no ayuda. Entonces ese tipo de consulta se vuelve costoso.
En ese caso, sería más eficiente almacenarlo de esta manera:
Columnas: ID_tag, ID_user_list
Fila: 1, 1
Fila: 2, 1
Fila: 3, 1,2
Fila: 4, 2
Entonces, ¿por qué no almacenar ambas tablas y facilitar la consulta de etiquetas para un usuario determinado o de usuarios para una etiqueta determinada? Asumir que duplicar el almacenamiento no cuenta como “ineficiente”.
Porque si alguna vez actualiza una tabla y no actualiza la otra, sus datos se convierten en basura:
Columnas: ID_user, ID_tag_list
Fila: 1, 1,2,3
Fila: 2, 3,4
Fila: 3, 1,3,4
Columnas: ID_tag, ID_user_list
Fila: 1, 1,3
Fila: 2, 1
Fila: 3, 1,2: ¿falta la ID de usuario 3?
Fila: 4, 2,4
Bien, ahora tenemos una anomalía. El usuario 3 debe tener la etiqueta 3, de acuerdo con la primera tabla, pero la segunda tabla no muestra la etiqueta 3 con el usuario 3.
Aquí está el problema: ¿Qué tabla es correcta? ¿Su aplicación tenía la intención de actualizar ambas tablas, pero falla a la mitad? ¿O alguien agregó una fila ilícita a la primera tabla?
Las bases de datos relacionales se centran en evitar anomalías, incluso si parece que el almacenamiento de datos es redundante o ineficiente.
Al almacenar las asociaciones entre usuarios y etiquetas en una tercera tabla, no hay forma de ingresar datos incorrectos en uno u otro lugar. La asociación existe exactamente en un lugar. Entonces está allí o no, pero al menos los datos no están en desacuerdo consigo mismos.