como unir estas dos tabla con foreing key en mysql

Iniciado por jhonatanAsm, 24 Diciembre 2011, 06:09 AM

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

jhonatanAsm

hola, tengo esta tabla registro, y quiero crear otra tabla comentarios, pero no logro crear la tabla comentarios.el codigo es el sgte:

tabla registro:


create table registro (id int not null auto_increment,
                                   nombre varchar(30) not null,
pass varchar(40) not null,
correo vachar(40) not null,
fono_fijo int not null,
celular int not null,
primary key (id));


tabla comentarios:

create table comentarios(id int not null,comentario text not null,fecha int not null,positivo int,negativo,int);


pd: me da error al momento de crear la 2dad tabla que se viene, como podria hacer para que me permitiese creat la tabla?salu2.
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

Shell Root

Código (sql) [Seleccionar]
CREATE TABLE IF NOT EXISTS `registro`(
 `id`     INT         NOT NULL AUTO_INCREMENT PRIMARY KEY,
 `nombre` VARCHAR(30) NOT NULL,
 `pass`   VARCHAR(32) NOT NULL,
 `email`  VARCHAR(60) NOT NULL,
 `tel`    VARCHAR(10) NOT NULL,
 `cel`    VARCHAR(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

El campo teléfono y celular no puede ser de tipo INT, tienes que mirar la longitud que soporta este tipo de dato. Yo usaría VARCHAR() -porque no realizarás ninguna operación con este dato- o NUMERIC()

Código (sql) [Seleccionar]
CREATE TABLE IF NOT EXISTS `comentarios`(
 `id`         INT  NOT NULL PRIMARY KEY AUTO_INCREMENT,
 `comentario` TEXT NOT NULL,
 `fecha`      DATE NOT NULL,
 `positivo`   INT  NOT NULL,
 `negativo`   INT  NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

El campo de fecha debería de ser de tipo DATE(). Los campos de positivo y negativo, dependiendo del valor que contengan podrían ser de tipo TINYINT o BOOLEAN, además de poderlos agrupar dentro de un sólo campo.



Para relacionar las tablas, podrías usar...
Código (sql) [Seleccionar]
FOREIGN KEY (`ForeingKeyTable1`) REFERENCES `Table2`(`PrimaryKeyTable2`)
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

jhonatanAsm

hola, la idea es crear una tabla usuario con id auto_increment, y crear una tabla comentario. donde un usuario podria tener 0 a + comentarios, y un comentario solo puede tener un dueño. en este caso estaría bien planteada la creacion de las 2 tablas? gracias por responder.salu2.
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

klaine

Plantéate que es lo que identifica al user, si, por ejemplo, es el correo, en la tabla comentarios los comentarios estarán relacionados con su user por aquello que es único para el usuario (su correo, en este caso)  :P

Saludos

jhonatanAsm

es así, no me lo había planteado bien. salu2.
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.