Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: jhonatanAsm en 24 Diciembre 2011, 06:09 am



Título: como unir estas dos tabla con foreing key en mysql
Publicado por: jhonatanAsm en 24 Diciembre 2011, 06:09 am
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:

Código:
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:
Código:
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.


Título: Re: como unir estas dos tabla con foreing key en mysql
Publicado por: Shell Root en 24 Diciembre 2011, 09:52 am
Código
  1. CREATE TABLE IF NOT EXISTS `registro`(
  2.  `id`     INT         NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3.  `nombre` VARCHAR(30) NOT NULL,
  4.  `pass`   VARCHAR(32) NOT NULL,
  5.  `email`  VARCHAR(60) NOT NULL,
  6.  `tel`    VARCHAR(10) NOT NULL,
  7.  `cel`    VARCHAR(20) NOT NULL
  8. ) 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
  1. CREATE TABLE IF NOT EXISTS `comentarios`(
  2.  `id`         INT  NOT NULL PRIMARY KEY AUTO_INCREMENT,
  3.  `comentario` TEXT NOT NULL,
  4.  `fecha`      DATE NOT NULL,
  5.  `positivo`   INT  NOT NULL,
  6.  `negativo`   INT  NOT NULL
  7. ) 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
  1. FOREIGN KEY (`ForeingKeyTable1`) REFERENCES `Table2`(`PrimaryKeyTable2`)


Título: Re: como unir estas dos tabla con foreing key en mysql
Publicado por: jhonatanAsm en 25 Diciembre 2011, 03:55 am
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.


Título: Re: como unir estas dos tabla con foreing key en mysql
Publicado por: klaine en 26 Diciembre 2011, 15:18 pm
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


Título: Re: como unir estas dos tabla con foreing key en mysql
Publicado por: jhonatanAsm en 26 Diciembre 2011, 22:57 pm
es así, no me lo había planteado bien. salu2.