Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Como relaciono esta bd en mysql

Estas en el tema de Como relaciono esta bd en mysql en el foro de Mysql en Foros del Web. Como relaciono esta bd en mysql, o sea quiero crear esto, como esta en la imagen. Código PHP: CREATE TABLE  ` alumno ` (   ` id `  ...
  #1 (permalink)  
Antiguo 29/05/2009, 16:53
 
Fecha de Ingreso: agosto-2008
Mensajes: 587
Antigüedad: 15 años, 8 meses
Puntos: 6
Como relaciono esta bd en mysql

Como relaciono esta bd en mysql, o sea quiero crear esto, como esta en la imagen.



Código PHP:
CREATE TABLE `alumno` (
  `
idint(10NOT NULL auto_increment,
  `
nombrevarchar(100NOT NULL,
  `
edadvarchar(10NOT NULL,
  `
papavarchar(100NOT NULL,
  
PRIMARY KEY  (`id`)
)

CREATE TABLE `papa` (
  `
idint(10NOT NULL auto_increment,
  `
nombrevarchar(100NOT NULL,
  `
edadvarchar(10NOT NULL,
  `
oficiovarchar(100NOT NULL,
  
PRIMARY KEY  (`id`)

  #2 (permalink)  
Antiguo 29/05/2009, 17:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Como relaciono esta bd en mysql

Es básica:
alumno.papa es FK y se referencia a papa.id
Código sql:
Ver original
  1. CREATE TABLE  `alumno` (
  2.   `id` INT(10) NOT NULL AUTO_INCREMENT,
  3.   `nombre` VARCHAR(100) NOT NULL,
  4.   `edad` VARCHAR(10) NOT NULL,
  5.   `papa` INT(10) UNSIGNED NOT NULL,
  6.   PRIMARY KEY  (`id`),
  7.   KEY `FK_alumno_papa` (`papa`),
  8.   CONSTRAINT `FK_alumno_papa` FOREIGN KEY (`papa`) REFERENCES `papa` (`id`)
  9. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  10.  
  11. CREATE TABLE  `papa` (
  12.   `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  13.   `nombre` VARCHAR(100) NOT NULL,
  14.   `edad` VARCHAR(10) NOT NULL,
  15.   `oficio` VARCHAR(100) NOT NULL,
  16.   PRIMARY KEY  (`id`)
  17. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

1. El campo FK tiene que ser del mismo tipo que el ID de la tabla referida.
2. Es mejor usar INTEGER y no INT(10). Tiene más alcance.
3. Las sentencias en MySQL tienen que terminar SIEMPRE con ";". No es opcional.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 29/05/2009, 17:45
 
Fecha de Ingreso: agosto-2008
Mensajes: 587
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: Como relaciono esta bd en mysql

Mysql me a lanzado un error critico.

  #4 (permalink)  
Antiguo 30/05/2009, 10:32
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Como relaciono esta bd en mysql

En las fq's de mysql explican este error.
http://www.forosdelweb.com/f86/faqs-...1/#post2024146

Como consejo adicional, cambia el orden en que se crean las tablas.
primero debe ser papa y despues alumno.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 30/05/2009, 11:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Como relaciono esta bd en mysql

Exacto. Perdón por ponerte las tablas en el orden equivocado.
El mensaje de error te indica que no tienes activado el motor de tablas InnoDB, que es en MySQL el motor de tablas relacionales.
Debes activarlo, de lo contrario la vinculación entre ambas tablas lo deberás manejar tu a nivel de programación y no en la base de datos, ya que el que debe estar activo es MyISAM, y ese no es relacional, por lo que las restricciones de clave foránea no funcionan.
Sigue las instrucciones del link que te puso huesos52.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:48.