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

Pido sugerencia de funcionalidad para guardar registros en la bd

Estas en el tema de Pido sugerencia de funcionalidad para guardar registros en la bd en el foro de Bases de Datos General en Foros del Web. Hola que tal; Bien el post es para pedir alguna sugerencia, ya que he implementado una solución pero me gustaría saber alguna otra forma de ...
  #1 (permalink)  
Antiguo 24/01/2009, 21:41
Avatar de Gerifaltus  
Fecha de Ingreso: junio-2005
Ubicación: Tabasco, México
Mensajes: 180
Antigüedad: 18 años, 10 meses
Puntos: 4
De acuerdo Pido sugerencia de funcionalidad para guardar registros en la bd

Hola que tal;

Bien el post es para pedir alguna sugerencia, ya que he implementado una solución pero me gustaría saber alguna otra forma de hacer lo que voy a describir, espero logre explicarme bien :)

1.- La aplicación que estoy haciendo es acerca de unos cursos, los cursos se pueden pagar en parcialidades (abonos), cada parcialidad tiene una fecha limite, es decir, cada curso tiene cierta cantidad de parcialidades y es el mismo número de fechas para pagar.

2.- La siguiente es mi tabla cursos (simplificada):

tabla cursos
id_curso | nombre_curso
1 | curso 1
2 | curso 2
3 | curso 3

3.- Para guardar las fechas de pago he creado otra tabla fechas_pagos, y la siguiente es su estructura

tabla fechas_pagos
id_fecha_pago | id_curso | fecha
1 | 1 | 10/02/2009
2 | 1 | 10/03/2009
3 | 2 | 15/03/2009

Como se habran dado cuenta, lo que hago es copiar tantas veces sea necesario (número de parcialidades) el id del curso y después agrego la fecha de pago (campo fecha). Ahora esto a simple vista se ve bien (digo yo jejejej ), el detalle es cuando el usuario quiere eliminar alguna fecha de pago, agregar más fechas de pago.

Para eliminar alguna fecha, pues solo "selecciona" y elimina la fecha que quiere, pero supongamos que para el curso 1 existen 5 fechas de pago y quiere reducirlo a 3 fechas, entonces lo que yo tendría que hacer es, buscar las 5 fechas y eliminarlas de la tabla y luego volver a insertar las nuevas 3 fechas en la misma tabla (fechas_pagos), pero eso conlleva dos consultas por un curso (DELETE e INSERT).

La pregunta del millón es, ustedes cómo gestionan este tipo de proceso??

Saludos y espero alguna sugerencia :)
__________________
:::.. Todo tiene un ¿Por qué? y un ¿Para qué? ..:::
:::.. Todo se reduce a un SI y a un No ..:::

Última edición por Gerifaltus; 25/01/2009 a las 00:21
  #2 (permalink)  
Antiguo 25/01/2009, 04:07
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Respuesta: Pido sugerencia de funcionalidad para guardar registros en la bd

Tema movido desde PHP a Bases de datos.

Saludos,
  #3 (permalink)  
Antiguo 25/01/2009, 13:03
Avatar de Gerifaltus  
Fecha de Ingreso: junio-2005
Ubicación: Tabasco, México
Mensajes: 180
Antigüedad: 18 años, 10 meses
Puntos: 4
De acuerdo Respuesta: Pido sugerencia de funcionalidad para guardar registros en la bd

Hola que tal;

He encontrado una alternativa de solución para evitar dos consultas a la base de datos y reducirla a una sola consulta, les explico. He tomado las mismas tablas para este ejemplo.

tabla cursos
id_curso | nombre_curso
1 | curso 1
2 | curso 2
3 | curso 3

3.- Para guardar las fechas de pago he creado otra tabla fechas_pagos, y la siguiente es su estructura

tabla fechas_pagos
id_fecha_pago | id_curso | fecha
1 | 1 | 10/02/2009
2 | 1 | 10/03/2009
3 | 2 | 15/03/2009

Les comentaba que guardaba en cada registro (fila) las fechas y los id's de los cursos tantas veces como número de parcialidades hubiesen, bien, lo que he ideado es serializar los datos y guardarlos serializados, de esta manera en lugar de ocupar por ejemplo 5 filas con diferente fecha, solo ocupo una fila y en lugar de las fechas, guardo el resultado de serializar las 5 fechas dentro de un array, ok, veamos un ejemplo

tabla fechas_pagos
id_fecha_pago | id_curso | fecha
1 | 1 | a:1:{i:0;s:10:"12-01-2009";}
2 | 2 | a:2:{i:0;s:10:"12-01-2009";i:1;s:10:"20-01-2009";}
3 | 3 | a:3:{i:0;s:10:"12-01-2009";i:1;s:10:"20-01-2009";i:2;s:10:"15-02-2009";}

ok, lo que aparece en el campo fecha, son las fechas "serializadas" en un array, para convertirlas hice lo siguiente:

Código PHP:
$fechas = array ('12-01-2009','20-01-2009','15-02-2009');
$serializadas serialize($fechas); 
Y de esa manera al momento de modificar, agregar ó quitar fechas de pago, sólo actualizao el registro (UPDATE) y escribo las nuevas fechas serializadas, y para regresarlas a su modo "natural" dentro del array, utilizo unserialize($serializadas).

Ok, si alguien tiene alguna otra sugerencia, es bienvenida.

Saludos
__________________
:::.. Todo tiene un ¿Por qué? y un ¿Para qué? ..:::
:::.. Todo se reduce a un SI y a un No ..:::
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 11:09.