DBDesigner y mysql 5 (No crea correctamente las FK)

Iniciado por Baaaw Oic, 21 Marzo 2010, 14:29 PM

0 Miembros y 1 Visitante están viendo este tema.

Baaaw Oic

El DBDesigner no crea bien las relaciones en servidores mysql 5 (++) .. alquien sabe de algun mod para que funcione como deberia o quizas otro software similar . ¿?

Gracias.

^Tifa^

Como es eso que no crea las relaciones bien? Que error te da para decir esto?  :P 

Baaaw Oic

#2
Haber ...  tengo un modelo de una BD en BDDesigner 4 ... resulta que cuando genero el codigo en SQL y lo ejecuto en un servidor mysql 5 todo bien (el motor es InnoDB).

Con esta instruccion vemos cuales son los FK de las tablas.

Código (sql) [Seleccionar]
select K.REFERENCED_TABLE_NAME, K.COLUMN_NAME, K.REFERENCED_COLUMN_NAME from KEY_COLUMN_USAGE K where K.TABLE_NAME='tabla' and K.CONSTRAINT_NAME not in('PRIMARY')

Pues resulta que el modelo esta con relaciones y todo eso .. y cuando ejecuto la consulta anterior no muestra nada de nada (aun habiendo relaciones en la tabla, esto lo probe en un servidor mysql superior a 4 (de 5 para arriba)).

Este es un script generado por DBDesigner 4:

Código (sql) [Seleccionar]
CREATE TABLE IF NOT EXISTS `usuario` (
 `codigo` int(11) NOT NULL auto_increment,
 `car_codigo` int(11) NOT NULL,
 `per_codigo` int(11) NOT NULL,
 `idusuario` varchar(20) NOT NULL,
 `fecreg` date NOT NULL,
 `fecing` date default NULL,
 `estado` char(1) NOT NULL default '1',
 PRIMARY KEY  (`codigo`),
 KEY `usuario_FKIndex1` (`per_codigo`),
 KEY `usuario_FKIndex2` (`car_codigo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


Cuando ejecuto el script para saber las FK retorna un valor nulo, pero cuando creo la tabla de la siguiente forma (elaborada manualmente) :

Código (sql) [Seleccionar]
CREATE TABLE IF NOT EXISTS `usuario` (
 `codigo` int(11) NOT NULL auto_increment,
 `car_codigo` int(11) NOT NULL,
 `per_codigo` int(11) NOT NULL,
 `idusuario` varchar(20) NOT NULL,
 `fecreg` date NOT NULL,
 `fecing` date default NULL,
 `estado` char(1) NOT NULL default '1',
 PRIMARY KEY  (`codigo`),
 FOREIGN KEY (car_codigo) REFERENCES cargo(codigo),
 FOREIGN KEY (per_codigo) REFERENCES personal(codigo)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


Aqui al ejecutar la consulta anterior si muestra los FK.

Gracias.

^Tifa^

Disculpame, yo nunca utilizo Disenadores de DB siempre hago todo a mano pero.... esto:

Código (sql) [Seleccionar]


CREATE TABLE IF NOT EXISTS `usuario` (
  `codigo` int(11) NOT NULL AUTO_INCREMENT,
  `car_codigo` int(11) NOT NULL,
  `per_codigo` int(11) NOT NULL,
  `idusuario` varchar(20) NOT NULL,
  `fecreg` date NOT NULL,
  `fecing` date DEFAULT NULL,
  `estado` char(1) NOT NULL DEFAULT '1',
  PRIMARY KEY  (`codigo`),
  KEY `usuario_FKIndex1` (`per_codigo`),
  KEY `usuario_FKIndex2` (`car_codigo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;



Donde especifica ahi que habra una FOREIGN KEY a otra tabla???  :huh:  :huh:
Sere totalmente ignorante en este caso pero pensaria esto KEY `usuario_FKIndex1` (`per_codigo`),  como la indicacion de ello, aunque jamas he visto esa sintaxis pero en caso de que sea valida (porque aparentemente lo es te crea la tabla en el motor) puede darse el caso que dicha sintaxis aunque la continue soportando, en la version del motor donde la estas aplicando ya no aplique funcional como una vez a lo mejor si fue.  Haz intentado crear la tabla anterior de la misma forma (en sintaxis) pero manualmente dentro del motor, no con ninguna aplicacion, y ya hecho ver si funciona?

Disculpa mi ignorancia en esta parte, cuando nunca he visto algo es normal que reaccione de tal manera  ;)


Baaaw Oic

Pues es por eso que necesito otro modelador ... ese codigo es generado por el DBDesigner 4 ...

^Tifa^

Pues porque no haz considerado WorkBench  ;)  esta en la web de MySQL en su web principal  :P

Baaaw Oic

Quiero instalarlo pero no puedo .. tengo problema con el yast y con el zypper .. >.< ''

:( :(

^Tifa^

Auch verdad  :xD  :xD

Pero porque quieras hacerlo mediante yast, porque no te descargas el source code de WorkBench (disponible en la misma web de MySQL) y pos intentas compilarlo  ;)  tambien existe (pero no se si disena se que administra si) la aplicacion llamada Aqua, inclusive existe Toad para MySQL (Aunque no se si existe para Linux) y tambien disena, solo que es mas manual el asunto tu tienes que escribir todo  :xD

Baaaw Oic

El problema radica en que tambien pide algunas librerias .. ( cosa que tampoco las puedo instalar ) .. todo se hace un bucle infinito ...

^Tifa^

Uhhh que feo  :-X

Pues, que te puedo decir mi amigo, de recomendarte IDE se te pueden recomendar muchos asumo, el problema es... que con todos vas a pasar alguna calamidad ya que hay dependencias que cumplir en librerias. Y si tienes un sistema operativo trancado como lo tienes en tu caso, no es mucho lo que se puede avanzar, podria decirte que crees tus tablas a mano o uses un editor comun ya instalado en tu sistema. Porque mucho no se puede hacer.

Al menos que vayas considerando probar otros repositorios como te habia dicho en tu post de Linux.