Taller de Base de Datos

Prácticas de laboratorio y tecnologías de Información

Claves foráneas en MySQL

Written By: Mtro. Gustavo Reyes Hernández - Apr• 01•10

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

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

13 Comments

  1. admin zUt says:

    mysql mysql ¬¬

  2. juan pablo says:

    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..

  3. elizabeth says:

    QUE BUENO QUE PODEMOS ENCONTRAR TEMAS QUE PARA MI PUNTO DE VISTA NOS SIRVEN MUCHO TANTO EN BASE DE DATOS COMO EN OTRAS MATERIAS

  4. Gerardo Delgado says:

    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.

    • admin zUt says:

      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

  5. Dhdez says:

    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!

  6. ReSee says:

    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..,

  7. JULIO CESAR says:

    Bien, me sirvio mucho gracias
    El INDEX para que sirve?
    en INDEX(id_cliente);

    • Maestro says:

      El INDEX permite una mayor rapidez en las consultas de una tabla, es el equivalente a crear el índice de un libro.

  8. JUAN FRANCSCO says:

    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…………

  9. Mary says:

    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:

Switch to our mobile site

%d bloggers like this: