ayuda con relaciones a db

Iniciado por PanConMantequilla, 24 Mayo 2011, 00:43 AM

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

PanConMantequilla

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?


Código (sql) [Seleccionar]


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  ;)

[u]nsigned

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

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

PanConMantequilla

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

PanConMantequilla

alguien podria explicar mi segunda duda  :-( :-( :-(

Nakp

necesitas integridad referencial? utiliza innodb para las tablas, en vez de myisam...
Ojo por ojo, y el mundo acabará ciego.

PanConMantequilla

#5
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