Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/12/2010, 05:59
Avatar de gnzsoloyo
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: Combinar tres tablas con la misma estructura en una sola

Es posible, pero tienes dos problemas a resolver:
1) Necesitas crear una tabla de categorías, que en definitiva tendrá valores fijos, pero que se usará para normalizar la base.
2) Si las PK de esas noticias se usan como FK en otra tabñla, requeriras crear un proceso que permita migrar los viejos valores de PK por los nuevos.

Respecto a cómo hacer para crear esa tabla nueva, en realidad requiere muy pocas sentencias:

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS categoria_comment(
  2.     comment_name VARCHAR(100)) ENGINE=InnoDB;
  3. INSERT INTO categoria_comment(comment_name)
  4. VALUES('WIKI'), ('NOTICIAS'),('REVISTA');
  5.  
  6. CREATE TABLE IF NOT EXISTS comentarios LIKE comentarios_wiki;
  7.  
  8. ALTER TABLE comentarios ADD COLUMN comment_id INT UNSIGNED;
  9. ALTER TABLE comentarios ADD FOREIGN KEY (comment_id)
  10.     REFERENCES categoria_comment(comment_id) ;
  11.  
  12. INSERT INTO comentarios(idn, nombre, comentario, fecha, comment_id)
  13. SELECT idn, nombre, comentario, fecha, 1 comment_id
  14. FROM comentarios_wiki
  15. SELECT idn, nombre, comentario, fecha, 2 comment_id
  16. FROM comentarios_noticias
  17. SELECT idn, nombre, comentario, fecha, 3 comment_id
  18. FROM comentarios_revista;

Puede que esté faltando o haya que corregir algo, pero la idea sería mas o menos esa.

Despues de esto, si las ID de las viejas tablas se usan como FK en alguna parte, sería necesario actualizar los valores por los nuevos y luego "desenganchar" esas tablas y hacer que se referencien a la nueva.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)