Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/03/2013, 02:14
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Optimizacion de BD

Si entiendo lo que quieres y como lo estas haciendo... pero

No explicas el significado de las tablas....con lo que es dificil saber si el diseño es correcto.
No entiendo porque un campo llamado number esta definido como varchar, un tipo string.
No entiendo porque si number no se puede repetir no defines un indice unico sobre el.
No explicas si hay actualización de las otras tablas.
No dices si entre las tablas "secundarias" se pueden repetir valores.

Si la estructura de las tabla se repite, y no hay repeticiones ni entre las tablas "secundarias", no entiendo porque no te ha de servir esto

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `tbl_principal` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `id_telefonica` int(11) NOT NULL,
  4.   `number` int(11) NOT NULL,
  5.   `tabla` ENUM (1,2,3),
  6.   PRIMARY KEY (`id`),
  7.   UNIQUE KEY `ind_number` (`number`)
  8. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_spanish2_ci AUTO_INCREMENT=1 ;

donde el campo tabla te diferencia entre los valores de number y facilmente con un indice unico puedes controlar que no se repitan los valores.

Código MySQL:
Ver original
  1. CREATE VIEW tbl_ndatabase as SELECT * FROM tbl_principal WHERE tabla=1;
  2. CREATE VIEW tbl_blacklist as SELECT * FROM tbl_principal WHERE tabla=2;
  3. CREATE VIEW tbl_cmdatabase as SELECT * FROM tbl_principal WHERE tabla=3;

Estas tres vistas te permitiran trabajar como si tuvieras las tablas originales.

Solo tienes que agregar a los inserts el valor de tabla para cada caso....y aplicar esto http://stackoverflow.com/questions/5...ate-key-update
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.