Pregunta

he tomado más de una base de datos que almacena información de fitness y estábamos teniendo un debate acerca de una determinada mesa y si debe permanecer como una mesa o se rompen en tres mesas.

Hoy en día, hay una tabla llamada: entrenamientos que tiene los siguientes campos

ID, exercise_id, repeticiones, el peso, la fecha, person_id

Así que si lo hice 2 series de 3 ejercicios diferentes en un solo día, tendría que 6 registros en esa tabla para ese día. por ejemplo:

Identificación, exercise_id, repeticiones, peso, fecha, person_id
1, 1, 10, 100, 1/1/2010, 10
2, 1, 10, 100, 1/1/2010, 10
3, 1, 10, 100, 1/1/2010, 10
4, 2, 10, 100, 1/1/2010, 10
5, 2, 10, 100, 1/1/2010, 10
6, 2, 10, 100, 1/1/2010, 10

Así que la pregunta es, dado que hay algunos datos redundantes (fecha, PersonaID, exercise_id) en varios registros, si así se normalizó a tres tablas

WorkoutSummary :
 - Identificación del
 - Fecha
 - person_id

WorkoutExercise :
 - Identificación del
 - workout_id (clave externa en WorkoutSummary)
 - exercise_id

WorkoutSets :
 - Identificación del
 - workout_exercise_id (clave externa en WorkoutExercise)
 - representantes
 - peso

Yo diría que el único inconveniente es que las consultas serían más lenta después de esta refactorización como ahora nos lo necesario para unirse a 3 mesas para hacer la misma consulta que no tenían une antes. El beneficio de la refactorización permite en el futuro para añadir nuevos campos a nivel de resumen de la rutina o el nivel de ejercicio con la adición a cabo en más de duplicación.

cualquier comentario sobre este debate?

¿Fue útil?

Solución

No asuma que las consultas serán más lentas después de la normalización. Se une en un pequeño número de mesas son muy baratos si las tablas están indexadas adecuadamente.

Por otro lado, las consultas en una tabla no normalizada puede fácilmente acabar siendo mucho más lento. Por ejemplo, en el esquema original, sólo tiene que intentar consultar las distintas fechas en que se realiza un entrenamiento es mucho más caro de lo que sería con la versión normalizada.

Definitivamente normalizarla en este punto. Si se encuentra con problemas de rendimiento más adelante, entonces puede empezar a desnormalización selectivamente ciertas partes de los datos además para el esquema ya normalizada. Sin embargo, con toda probabilidad, nunca se llega a ese punto con una pequeña base de datos.

Otros consejos

El nuevo refactorización parece buena, y el rendimiento no será todo lo que ven afectados si tiene los índices correspondientes en las distintas tablas. (índices se pueden crear en todas las claves externas)

Entonces YES , que parece una refactorización perfectamente normal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top