sql >> Base de Datos >  >> RDS >> Mysql

¿Debo normalizar mi base de datos o no?

Una respuesta filosófica:las bases de datos subóptimas (relacionales) están plagadas de anomalías de inserción, actualización y eliminación. Todo esto conduce a datos inconsistentes, lo que resulta en una mala calidad de los datos. Si no puede confiar en la precisión de sus datos, ¿de qué sirve? Pregúntate esto:¿Quieres las respuestas correctas más despacio o quieres las respuestas incorrectas más rápido?

Como cuestión práctica:hazlo bien antes de hacerlo rápido. Los humanos somos muy malos para predecir dónde ocurrirán los cuellos de botella. Haga que la base de datos sea excelente, mida el rendimiento durante un período de tiempo decente y luego decida si necesita hacerlo más rápido. Antes de desnormalizar y sacrificar la precisión, pruebe otras técnicas:¿puede obtener un servidor más rápido, una conexión, un controlador de base de datos, etc.? ¿Podrían los procedimientos almacenados acelerar las cosas? ¿Cómo son los índices y sus factores de relleno? Si esas y otras técnicas de rendimiento y ajuste no funcionan, solo entonces considere la desnormalización. Luego mida el rendimiento para verificar que obtuvo el aumento de velocidad que "pagó". Asegúrese de que está realizando una optimización, no una pesimización.

[editar]

R:Claro.

  1. Haga una copia de seguridad.
  2. Haga otra copia de seguridad en un dispositivo diferente.
  3. Cree tablas nuevas con comandos de tipo "seleccionar en tabla nueva desde tabla antigua...". Deberá hacer algunas uniones para combinar tablas previamente distintas.
  4. Deje las tablas viejas.
  5. Cambie el nombre de las nuevas tablas.

PERO ... considere un enfoque más sólido:

Cree algunas vistas en sus tablas completamente normalizadas ahora mismo. Esas vistas (tablas virtuales, "ventanas" en los datos... pregúnteme si quiere saber más sobre este tema) tendrían la misma consulta definitoria que el paso tres anterior. Cuando escriba su aplicación o lógica de capa de base de datos, use las vistas (al menos para acceso de lectura; las vistas actualizables son... bueno, interesantes). Luego, si desnormaliza más tarde, cree una nueva tabla como la anterior, suelte la vista, cambie el nombre de la nueva tabla base cualquiera que sea la vista. Su aplicación/capa de base de datos no notará la diferencia.

En realidad, hay más en esto en la práctica, pero esto debería ayudarlo a comenzar.