Hola a todos, estoy empezando a modelar bases de datos :-[ (sigo leendo manuales) y mi duda es la sgte:
Modelo una db para 2 idiomas y no se que tipo de llave usar (PK,FK,unique, KEY, etc) a los campos que relacionan ambas tablas.
Mi duda esta en la tabla contents_lang y sus campos id_content e id_lang, pensaba nombrarlos FK con referencias a sus respectivas tablas pero busque ejemplos y vi que en otros casos a esos dos campos los usan como PK (2 llaves primarias, y las referencias :huh:) ,KEY, y hasta UNIQUE KEY >:( , no se cual sea la opcion correcta y ¿por que?
CREATE TABLE IF NOT EXISTS `contents`(
`id_content` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
`date_add` DATETIME,
`date_upd` DATETIME,
PRIMARY KEY(`id_content`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `contents_lang`(
`id_content` INT(11) UNSIGNED NOT NULL,
`id_lang` INT(10) UNSIGNED NOT NULL,
`title` VARCHAR(100) NOT NULL,
`description` TEXT NOT NULL,
PRIMARY KEY(`id_content`,`id_lang`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `lang`(
`id_lang` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(32) NOT NULL,
`active` TINYINT(1) NOT NULL DEFAULT '0'
`iso_code` char(2) NOT NULL,
PRIMARY KEY(`id_lang`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
Saludos y doy gracias de ante mano ;)
Si tus tablas son MyISAM no tiene sentido usr claves foraneas, dado que todava no son soportadas por este motor.
Creo que deberias usar PK.
Saludos
Gracias por responder y aclararme lo de las FK en MyISAM, entonces usare 2 PK como tenia en mente, pero ahora como hago las referencias, pensaba hacer ingenieria inversa en workbench y ver mis tablas relacionadas (las lineas de tabla a tabla) para observar como va, como haria eso? porque las PK no llevan REFERENCES como las FK para hacer esos enlaces, aún no domino workbench y preferiria hacerlo a codigo
Gracias de ante mano
alguien podria explicar mi segunda duda :-( :-( :-(
necesitas integridad referencial? utiliza innodb para las tablas, en vez de myisam...
Gracias por responder, prefiero seguir usando myisam, y no es un requisito tener integridad referencial pero me gustaría que lo tenga para tener una mejor vista de toda la db completa, además ver las tablas sin integridad referencial en workbench u otra ide debe ser un lio el no ver instantaneamente que tabla se relaciona con otra :-\
Aún no acepto la idea que no exista integridad referencial en myisam o no sé como soportan uds ver las tablas sin esas las lineas relacionales.. o se lo aguantan :xD
saludos
PD: la integridad referencial a la que me refiero es solo a las lineas que unen un id de una tabla a otra, mas no la actualizacion o eliminacion en cascada