Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

no se me ocurre como modelar esta BDD

Estas en el tema de no se me ocurre como modelar esta BDD en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 25/01/2012, 05:02
 
Fecha de Ingreso: junio-2008
Mensajes: 175
Antigüedad: 15 años, 9 meses
Puntos: 11
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:
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}
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.

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!
  #2 (permalink)  
Antiguo 25/01/2012, 16:20
 
Fecha de Ingreso: enero-2008
Mensajes: 201
Antigüedad: 16 años, 3 meses
Puntos: 39
Respuesta: no se me ocurre como modelar esta BDD

Sinceramente no veo el problema a poner un campo que sea series, otro repeticiones, otro peso...
  #3 (permalink)  
Antiguo 26/01/2012, 09:50
 
Fecha de Ingreso: junio-2008
Mensajes: 175
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: no se me ocurre como modelar esta BDD

Cita:
Iniciado por _Ruben_ Ver Mensaje
Sinceramente no veo el problema a poner un campo que sea series, otro repeticiones, otro peso...
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
  #4 (permalink)  
Antiguo 26/01/2012, 13:46
 
Fecha de Ingreso: enero-2008
Mensajes: 201
Antigüedad: 16 años, 3 meses
Puntos: 39
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.
  #5 (permalink)  
Antiguo 27/01/2012, 03:28
 
Fecha de Ingreso: junio-2008
Mensajes: 175
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: no se me ocurre como modelar esta BDD

Cita:
Iniciado por _Ruben_ Ver Mensaje
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.
Muchas gracias por tu respuesta, empiezo a verlo mas claro. Veamos, tu solucion entonces es que almacene una entrada en la BDD por cada serie, no?

Esto tambien lo habia pensado pero ahora me surge otra duda, no creceria muy rapidamente el tamaño de la base de datos? hay programas en los que tenemos que almacenar por ejemplo muchos valores cada mes. Un programa que dure 5 dias con 10 ejercicios cada dia (a una media de 3 series por ejercicio) implicaria almacenar 5x10x3 = 150 valores semanalmente = 600 valores mensualmente. Me da miedo que luego ralentice mucho el proceso de hacer una busqueda o generar una grafica o unas estadisticas a la hora de consultar los datos de meses anteriores.

De todos modos voy a empezar a modelar esta BDD a ver que tal queda.

Gracias de nuevo!! :D
  #6 (permalink)  
Antiguo 27/01/2012, 08:57
 
Fecha de Ingreso: enero-2008
Mensajes: 201
Antigüedad: 16 años, 3 meses
Puntos: 39
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.
  #7 (permalink)  
Antiguo 27/01/2012, 11:24
 
Fecha de Ingreso: junio-2008
Mensajes: 175
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: no se me ocurre como modelar esta BDD

Cita:
Iniciado por _Ruben_ Ver Mensaje
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.
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

Etiquetas: php, registros, campos, bbdd
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:50.