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

Separar una tabla en dos mas pequeñas

Estas en el tema de Separar una tabla en dos mas pequeñas en el foro de Mysql en Foros del Web. Hola! Si por ejemplo tengo una tabla, que por ejemplo contiene la informacion de importaciones. Por lo tanto cada linea contiene una "cabecera" por asi ...
  #1 (permalink)  
Antiguo 03/11/2011, 10:55
Myl
 
Fecha de Ingreso: agosto-2011
Mensajes: 61
Antigüedad: 12 años, 8 meses
Puntos: 3
Separar una tabla en dos mas pequeñas

Hola!

Si por ejemplo tengo una tabla, que por ejemplo contiene la informacion de importaciones. Por lo tanto cada linea contiene una "cabecera" por asi decirlo, con campos como "CODIGO DE ACEPTACIOn" y la "FECHA ACEPTACION", ademas de la informacion de cada item (Recordar que todo esto va contenido en una linea de la tabla grande)

Lo que necesito es separar esta tabla grande en dos mas pequeñas; es decir en una tabla que contenga la informacion de la "cabecera" y en otra donde guarde "la informacion de los items".

En teoria separar estas cosas es facil, con un trigger podria hacerlo facilmente, pero el problema es que por ejemplo en la tabla con la informacion de cabecera, no deberia repetirse ningun "CODIGO DE ACEPTACIOn" y "FECHA ACEPTACION".

He buscado y puedo usar un DISTINCT o agrupar por GROUP BY, pero luego a la segunda tabla debo asicuale la ID de la primera para luego hacer JOINS.

La tabla es bastante grande, y de igual forma puedo hacer algun codigo que me haga tal cosa, pero seria bastante tedioso.

Mi duda es ¿Hay alguna forma facil de hacer tal cosa?.
Quizas hacer algun procedimiento almacenado o algo, necesito algun consejo por favor
  #2 (permalink)  
Antiguo 03/11/2011, 11:02
 
Fecha de Ingreso: junio-2007
Ubicación: Buenos Aires, Argentina
Mensajes: 262
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Separar una tabla en dos mas pequeñas

Si no entiendo mal, lo que deberías hacer es crear dos tablas (cada una con los datos que indicás) y asignarles un ID a cada una de ellas para poder relacionarlas. Por ejemplo, podés poner un "item_id" en la tabla "cabeceras" que lo relacione con los datos de la tabla "items" y relacionarlos con un JOIN.

Para que los datos sean únicos en la tabla "cabeceras" podés definirlos como únicos en MySQL. Para que no haya errores deberás validar cómo se introducen los datos.

Si la tabla es muy grande, para mostrar los resultados te aconsejo que uses un "limit" para que sólo devuelva una cantidad limitada de resultados, y lo acompañes con un paginador para navegar las diferentes páginas.

No estoy muy seguro si esto te ayudará, pero quizás aporta un poco de luz a la cuestión :)

Saludos!
Pablo
__________________
Moebius Digital | La pieza que faltaba
Diseño web | Web hosting
  #3 (permalink)  
Antiguo 03/11/2011, 12:50
Myl
 
Fecha de Ingreso: agosto-2011
Mensajes: 61
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Separar una tabla en dos mas pequeñas

Gracias por responder, creo que seguire estudiando las posivilidades.
Otra vez gracias :D
  #4 (permalink)  
Antiguo 03/11/2011, 17:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Separar una tabla en dos mas pequeñas

Cita:
Iniciado por Myl Ver Mensaje
Hola!

Si por ejemplo tengo una tabla, que por ejemplo contiene la informacion de importaciones. Por lo tanto cada linea contiene una "cabecera" por asi decirlo, con campos como "CODIGO DE ACEPTACIOn" y la "FECHA ACEPTACION", ademas de la informacion de cada item (Recordar que todo esto va contenido en una linea de la tabla grande)

Lo que necesito es separar esta tabla grande en dos mas pequeñas; es decir en una tabla que contenga la informacion de la "cabecera" y en otra donde guarde "la informacion de los items".

En teoria separar estas cosas es facil, con un trigger podria hacerlo facilmente, pero el problema es que por ejemplo en la tabla con la informacion de cabecera, no deberia repetirse ningun "CODIGO DE ACEPTACIOn" y "FECHA ACEPTACION".

He buscado y puedo usar un DISTINCT o agrupar por GROUP BY, pero luego a la segunda tabla debo asicuale la ID de la primera para luego hacer JOINS.

La tabla es bastante grande, y de igual forma puedo hacer algun codigo que me haga tal cosa, pero seria bastante tedioso.

Mi duda es ¿Hay alguna forma facil de hacer tal cosa?.
Quizas hacer algun procedimiento almacenado o algo, necesito algun consejo por favor

Lo que estás planteando es lo que se denomina "normalización de bases de datos", y es un paso previo a cualquier implementación. No es una etapa que se haga por consultas o por TRIGGERS, sino que se hace en la etapa de diseño del modelo de datos.
Si quieres hacerlo bien, tendrás que leer el tema de Normalización de Base de Datos y Formas Normales.
Puedes encontrar una explicación básica en Wikipedia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campos, tabla
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 20:48.