Cuando una tabla contiene una columna que hace referencia al _id de otra tabla, ¿es necesario incluir las columnas de la tabla referenciada?
En MongoDB,
supongamos que tengo una tabla llamada “Skills”, la cual tiene una columna que hace referencia a la clave primaria de “Users”.
Las consultas que involucran la obtención de datos de “Skills” también deberán obtener datos sobre “Users”.
Pregunta:
¿Deberían incluirse las columnas de “Users” que contienen datos que serán obtenidos en la tabla de “Skills”, o simplemente deberían buscarse en la tabla de “Users”?
EDITADO:
¿Qué forma sería más rápida? Y si hay alguna diferencia, ¿es despreciable?
davy.ai
En MongoDB, no hay tablas ni claves foráneas como en las bases de datos relacionales como SQL, en su lugar, tenemos colecciones y documentos.
Suponiendo que tenemos una colección llamada
Skills
que contiene documentos que hacen referencia al campo_id
de la colecciónUsers
usando la sintaxisref
, el enfoque recomendado es buscar los datos en la colecciónUsers
en lugar de incluirlos en los documentos deSkills
.Este enfoque se conoce como normalización de la base de datos, que tiene como objetivo reducir la redundancia de datos, mejorar la consistencia de datos y evitar anomalías que puedan surgir al actualizar datos en varios lugares.
En cuanto a la pregunta de qué camino es más rápido, depende del tamaño de las colecciones y del tipo de consultas que se estén realizando. En general, realizar una operación de búsqueda puede ser más lento que consultar una sola colección. Sin embargo, con técnicas adecuadas de indexación y optimización de consultas, el impacto en el rendimiento debería ser insignificante para la mayoría de los casos de uso. Por lo tanto, se recomienda seguir el enfoque de normalización a menos que haya razones legítimas para desnormalizar los datos.