En mi trabajo, se me ha pedido que viole la primera forma normal (repetir grupos a través de columnas, usar valores vacíos / nulos) varias veces, "en aras de la potencia de procesamiento de la computadora". En pocas palabras, una tabla de "estudiantes" debe tener al menos 8 campos vacíos (por ejemplo, teléfonos: teléfono1, teléfono2, teléfono3 ...) en lugar de mi sugerencia: una tabla de "teléfono" que contiene un número de teléfono (y otros posibles metadatos) y la clave externa es el número de identificación del alumno. Mi jefe dice que es mejor almacenarlos de esa manera porque "hay menos ciclos de CPU y eso es importante en las plataformas web", en lugar de usar relaciones. Digo que, en el peor de los casos, es insignificante.
En ese ejemplo, usar relaciones (supongamos que las tablas están llenas de muchos registros en una aplicación web de tamaño mediano) es notablemente más lento que usar ese tipo de esquema de tabla.
fuente
Respuestas:
No veo cómo alguien podría hacer tal declaración sin tener algunos hechos reales que lo respalden. Si sus consultas están vinculadas a la CPU, debería buscar formas de reducir ese cuello de botella.
Parece que su jefe siente que una base de datos desnormalizada funcionará mejor, pero no sé lo suficiente sobre su aplicación para decir si eso es correcto o no. ¿Cuál será el número esperado de eliminaciones, actualizaciones e inserciones para esta tabla?
Esperaría que un diseño tan desnormalizado pueda dar como resultado una cantidad reducida de tiempo de CPU, pero esperaría que la E / S de su disco aumentara. Y las lecturas físicas del disco serán mucho más caras que un ciclo de CPU, por lo tanto, ¿quizás su jefe tenga una métrica muy específica que cumplir (CPU) y, como resultado, quiera un diseño muy específico? Si es así, simplemente construiría lo que se solicita y mantendría métricas sobre el costo de la CPU para las consultas que se ejecutan. Si ve un aumento en el tiempo, es posible que desee sugerir algunos cambios de diseño.
De hecho, probablemente sea una buena idea obtener una lista de todas las métricas que su jefe quiere ver y rastrearlas a lo largo del tiempo.
fuente