| |||
| no se me ocurre como modelar esta BDD Hola a todos, Vereis es un poco largo de explicar pero intentare resumirlo lo maximo posible. Estoy entrenando en el gimnasio con un amigo y nos interesaria almacenar en una BDD los progresos que vamos haciendo. Cada mes mas o menos cambiamos el programa (los ejercicios para que nos entendamos) y ponemos ejercicios nuevos. Habia pensado crear una plantilla en la BDD para almacenar estos ejercicios, el problema es que no siempre hacemos un numero fijo de ejercicios por lo que los campos de la BDD serian variables. Os pongo un ejemplo: Primer mes: Pierna: 3 series x 10 repeticiones (60kg) Hombro: 3 series x 8 repeticiones (20kg) Biceps: 3 series x 6 repeticiones (15kg) Segundo mes: Pierna: 2 series x 20 repeticiones (80kg) Hombro: 3 series x 6 repeticiones (20kg) Pecho: 3 series x 8 repeticiones (70kg) Triceps: 2 series x 10 repeticiones (50kg) Como veis, tanto los ejercicios, como el numero de series y de repeticiones varian de un mes a otro asi que no puedo usar un campo fijo en la BDD para almacenarlos. Lo que habia pensado era lo siguiente, ir añadiendo registros en la BDD a medida que los vayamos haciendo y en lugar de crear un campo SERIES y otro REPETICIONES crear un campo de tipo TEXT donde almacene la tira de series y repeticiones en un formato tipo {peso-repeticion, peso-repeticion, peso-repeticion};{peso-repeticion ...} De manera que cada grupo de { ... } sea un ejercicio comprendido por pares de kilos-repeticiones separados por las series. Luego en PHP solo tendria que ir separando los grupos de {} e ir cogiendo los diferentes de pares kg-repeticion:
Código:
A priori parece bastante simple pero me encuentro ahora con el problema de que no se como detectar a que ejercicio corresponde cada grupo de series y repeticiones y como he dicho, tampoco puedo poner los ejercicios en campos individuales de la BDD ya que puede que un mes ese ejercicio tenga 2 series o puede que tenga 5.Primer mes:
Pierna: 3 series x 10 repeticiones (60kg)
Hombro: 3 series x 8 repeticiones (20kg)
Biceps: 3 series x 6 repeticiones (15kg)
Segundo mes:
Pierna: 2 series x 20 repeticiones (80kg)
Hombro: 3 series x 6 repeticiones (20kg)
Pecho: 3 series x 8 repeticiones (70kg)
Triceps: 2 series x 10 repeticiones (50kg)
Por lo que tendria una estructura en la base de datos similar a esta:
ID-------------Usuario--------------Fecha-----------------Resultados
1---------------Yo------------------Primer mes----------{60-10,60-10,60-10};{20-8,20-8,20-8};{15-6,15-6,15-6}
2---------------Yo------------------Segundo mes---------{80-20,80-20};{20-8,20-8,20-8};{70-8,70-8,70-8};{50-10,50-10}
3------------Amigo------------------Primer mes----------{60-10,60-10,60-10};{20-8,20-8,20-8};{15-6,15-6,15-6}
4------------Amigo------------------Segundo mes---------{80-20,80-20};{20-8,20-8,20-8};{70-8,70-8,70-8};{50-10,50-10}
Agradeceria cualquier tipo de ayuda o indicacion. Es posible que mi aproximacion no sea la mas optima, aun no he empezado a modelar la BDD asi que aun se puede cambiar cualquier cosa. Gracias de antemano y un saludo! |
| |||
| Respuesta: no se me ocurre como modelar esta BDD Cita: Hola,Pues a ver, el problema es que los campos son variables. Para que se entienda mejor pongo una captura: Como ves entre un entreno y otro no siempre voy a tener el mismo numero de campos (en el primer entreno deberia tener 2 campos para el primer ejercicio mientras que en el tercero deberia tener 3, y en el quinto y sucesivos 4). Por eso habia pensado lo de poner un campo tipo TEXT o VARCHAR para ir almacenando cada uno de los valores (cada casilla de la tabla es un valor que se debe almacenar) por que una vez tenga creada la estructura de la tabla esta deberia permanecer fija. Entiendo que sea un poco complicado de entender, a mi me esta costando horrores y la verdad es que no se por donde cogerlo |
| |||
| Respuesta: no se me ocurre como modelar esta BDD Sigo sin ver el problema... o no termino de entender el planteamiento, o tu estás enfocando mal la solución. Te planteo mi solución. Una tabla que (a parte del id, la persona y la fecha) te guarde: el número de serie, las repeticiones y el peso (que en principio es lo que veo que te da problema, de forma que la tabla quedaría de esta forma: ID-------------Usuario--------------Fecha-----------------Serie-------Repeticiones------Peso 1---------------Yo------------------Primer mes----------------1-------------15---------------15-- 2---------------Yo------------------Primer mes----------------2-------------15---------------15-- 3---------------Yo------------------Segundo mes-------------1-------------15---------------15-- 4---------------Yo------------------Segundo mes-------------2-------------15---------------20-- 5---------------Yo------------------Segundo mes-------------3-------------15---------------20-- 6---------------Yo------------------Tercer mes----------------1-------------15---------------25-- 7---------------Yo------------------Tercer mes----------------2-------------15---------------30-- Esto sería para un usuario que el primer mes hace 2 series de 15 repeticiones a 15 kilos, el segundo mes 3 series de 15 repeticiones (la primera a 15 kilos y las otras 2 a 20 kilos), y el tercer mes 2 series de 15 repeticiones (la primera a 25 kilos y la segunda a 30 kilos). He puesto datos variados para que veas la flexibilidad de la tabla, aun tiene más posibilidades, pero con esa para un ejemplo creo que es suficiente. |
| |||
| Respuesta: no se me ocurre como modelar esta BDD Las bases de datos están preparadas para soportar muchos registros, la velocidad de respuesta al consultar muchas veces se debe a que la consulta que se realiza no está optimizada. |
| |||
| Respuesta: no se me ocurre como modelar esta BDD Cita: En ese caso ningun problema, voy a incorporarle algunos campos mas (ya que necesitaria saber de que ejercicio se trata) y luego un campo extra para relacionarlo con el tipo de programa que se esta realizando (ya que ese formulario se tiene que dibujar de alguna manera).Gracias de nuevo y un saludo! :D |