Esta pregunta podría ser más adecuada para los programadores.stackexchange. Si es así, por favor migre.Cuántas combinaciones son factibles en la práctica
Actualmente estoy reflexionando sobre la complejidad de los modelos de datos típicos. Todo el mundo sabe que los modelos de datos deben estar normalizados, sin embargo, por otro lado, un modelo de datos normalizado requerirá bastantes combinaciones para volver a ensamblar los datos más adelante. Y las uniones son operaciones potencialmente costosas, dependiendo del tamaño de las tablas involucradas. Entonces, la pregunta que estoy tratando de resolver es cómo uno normalmente haría esto. Es decir. en la práctica, ¿cuántas uniones sería aceptable en las consultas típicas al diseñar un modelo de datos? Esto sería especialmente interesante al contar múltiples uniones en consultas individuales.
Como ejemplo digamos que tenemos usuarios, que poseen casas, en las que hay habitaciones, que tienen cajones, que contienen elementos. Normalizarlo trivialmente con tablas para usuarios, casas, salas, cajones y elementos en el sentido explicado anteriormente, requeriría más adelante que me una a cinco tablas cuando obtenga todos los elementos que pertenecen a un determinado usuario. Esto me parece una gran cantidad de complejidad.
Lo más probable es que el tamaño de las tablas también esté involucrado. Unirse a cinco tablas con pocos datos no es tan malo como tres tablas con millones de filas. ¿O esta consideración es incorrecta?
5 tablas está a solo 4 uniones. No realmente muchos. Y no necesitará datos de todas las 5 tablas en todas las consultas. Si tiene menos tablas (desnormalizadas), tendrá que ocuparse de las tablas más grandes en todas las consultas. –
Como dijo ypercube, 5 tablas no son muchas. (Por lo general, intento limitar las tablas: se une en una sola consulta para ajustar visualmente en la pantalla; significa aproximadamente 20 tablas :)). Pero si en su aplicación de ejemplo la carga proviene principalmente de consultas de elementos de los usuarios, puede considerar agregar alguna redundancia, agregar una ID de usuario a la tabla de elementos: asegúrese de que sus consultas específicas sean mucho más rápidas. Por supuesto, debe diseñar cuidadosamente la inserción de registros y la lógica de actualización para no crear datos conflictivos. Como siempre, no existe una solución de "talla única". – Arvo