Este es un pequeño avance para entender como se definen las claves foráneas en MySQL.

Para que un campo sea clave foránea, este necesita ser definido como tal al momento de crear la tabla. En MySQL se pueden definir claves foráneas, pero únicamente se pueden utilizar cuando se usan tablas del tipo InnoDB.

Para poder trabajar con claves foráneas necesitan hacer lo siguiente:

  1. Crear ambas tablas del tipo InnoDB.
  2. Usar la sintaxis FOREIGN KEY (campo_fk) REFERENCES nombre_tabla (nombre_campo)
  3. Crear un índice en el campo que ha sido declarado clave foránea

InnoDB no crea automaticamente índices en las claves foráneas, así que deben crearlos de manera explícita. Los índices son necesarios para que la verificación de las claves foráneas sea más rápida.

Ejemplo:

CREATE TABLE cliente
(
id_cliente INT NOT NULL,
nombre VARCHAR(30),
PRIMARY KEY (id_cliente)
) TYPE = INNODB;

CREATE TABLE venta
(
id_factura INT NOT NULL,
id_cliente INT NOT NULL,
cantidad INT,

PRIMARY KEY(id_factura),

INDEX (id_cliente);
FOREIGN KEY (id_cliente) REFERENCES cliente(id_cliente)
) TYPE = INNODB;

Los campos correspondientes en la clave foránea y en la clave referenciada deben tener tipos de datos similares para que puedan ser comparadas sin la necesidad de hacer una conversión de tipos.

Powered By DT Author Box

Written by Mtro. Gustavo Reyes Hernández

Maestro en Gestión de Tecnologías de la Información
Investigador sobre el uso de las TIC’s en la educación

Claves foráneas en MySQL
Tagged on:             

13 thoughts on “Claves foráneas en MySQL

  • es bueno que haya
    temas asi en el blog
    mas de alguno le servira
    la informacion y sabran que
    en este lugar hay
    donde consultar temas de
    nuestra índole..

  • Felicito al grupo de Taller de BD, pero de forma muy especial al maestro Gustavo, por no solo generar una idea con el grupo sino ademas de planearlo, organizarlo y hecharlo a andar. Hay una gran diferencia entre generar una idea y aplicarlo, y eso resumido en una palabra es GANAS. Por eso los felicito, y también por lo que ya analicé en sus página, se me hizo muy interesante porque atiendes aspectos académicos, tecnológicos, humanísticos y sociales. Esta bastante completo y muy bien organizado.
    Deseando lo mejor para todos ustedes en la materia de Taller de BD, y muchos EXITOS, por medio de nuevas ideas para seguir enriquesiendo este proyecto que iniciaron y generando nuevos proyectos. En hora buena.

    1. la verdad es que este proyecyo es bueno.. pero aún no se logra la atención de todos los del grupo y eso es triste u.u
      aún así felicidades.. siempre innovando =D

  • afuera la tristeza zUT, pienso k la mayoría visita este blog solo k no se toman o nos tomamos el tiempo para dejar un comentario (I sorry). En lo personal aprecio el esfuerzo k hacen por mantener el blog al día. GRACIAS POR EL TIEMPO K INVIERTEN EN EL!

  • ok,,, maestro

    gr@xias,,

    hace unos dias andaba xop tr¡ste!!!,,, no podia crear mis tablas desde la consola de mysql,, me generaba un error k no podia entender,,, sobre todo pork a mi logika le parecia correcto,, estaba anklada en un error de sintaxis,, bueno almenos eso kre¡a,,,, prob kon phpmyadmin pero no k kise kedarme kon la duda.,,ahora k leo su post,,,, me dio kuenta k pasaba.

    se agradece su esfuerzo y sobre todo su dedicacion a lo k hace,,, bien prof..,

  • gracias por su aporte pero, a mi no me crea la tabla venta me manda el siguiente error
    #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” at line 9

    espero y me puedan ayudar…………

  • Buen dia.. disculpe una pregunta si quiero crear una tabla que tenga dos claves foraneas. como lo hago?.. he estado probando y no me sale, muchas gracias por su ayuda..

Leave a Reply

Follow

Get every new post delivered to your Inbox

Join other followers:

%d bloggers like this: