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

MySQL:varias tablas o una tabla con muchas columnas?

Cada vez que la información es uno a uno (cada usuario tiene un nombre y una contraseña), entonces probablemente sea mejor tener una tabla, ya que reduce la cantidad de uniones que la base de datos necesitará hacer para recuperar los resultados. Creo que algunas bases de datos tienen un límite en el número de columnas por tabla, pero no me preocuparía por eso en casos normales, y siempre puedes dividirlo más tarde si lo necesitas.

Si los datos son de uno a muchos (cada usuario tiene miles de filas de información de uso), entonces deben dividirse en tablas separadas para reducir los datos duplicados (los datos duplicados desperdician espacio de almacenamiento, espacio de caché y hacen que la base de datos sea más difícil de mantener). ).

Puede encontrar el artículo de Wikipedia sobre normalización de bases de datos interesante, ya que discute las razones de esto en profundidad:

La normalización de la base de datos es el proceso de organizar los campos y las tablas de una base de datos relacional para minimizar la redundancia y la dependencia. La normalización generalmente implica dividir tablas grandes en tablas más pequeñas (y menos redundantes) y definir las relaciones entre ellas. El objetivo es aislar los datos para que las adiciones, eliminaciones y modificaciones de un campo se puedan realizar en una sola tabla y luego se propaguen por el resto de la base de datos a través de las relaciones definidas.

Desnormalización también es algo a tener en cuenta, porque hay casos en los que es mejor repetir datos (ya que reduce la cantidad de trabajo que debe hacer la base de datos al leer datos). Recomiendo enfáticamente que sus datos estén lo más normalizados posible para comenzar, y solo desnormalice si tiene conocimiento de problemas de rendimiento en consultas específicas.