Tutorial de Mysql Basico Part.2
Hoy veremos las Claves Foraneas (Foreign Key), en Mysql
Las claves foraneas las ocupamos para hacer referencia desde una tabla a otra, la cual tienen un identificador en comun, el fin general de esto es no tener que actualizar o eliminar uno a uno los registros en ambas tablas de tal manera que al hacer cualquiera de estas acciones lo realize en cascada.
Para esto utilizaremos las tablas la primera sera nuestra tabla padre
create table alumnos(
cod_alumno int(100) primary key auto_increment,
alumno varchar(50) not null,
cod_grado int(5),
fecha_ingreso timestamp NOT NULL DEFAULT current_timestamp
)ENGINE=InnoDB ;
Destacamos el motor (Engire) que utilizaremos esta ocación ya que debemos utilizar InnoDB para que nuestra tabla pueda soportar el uso de las claves foraneas,
Cabe mencionar que para poder utilizar el motor InnoDB, este debe de estar habilitado, en caso que aparesca un mensaje avisandonos que este no esta habilitado debemos ir a nuestro archivo de configuracion de Mysql (my.ini), y buscamos la siguiente linea:
esta la comentamos dejando un "#" antecedientolo quedando asi:
y listo solo nos queda reiniciar nuestro mysql y listo podemos crear tablas con motor InnoDB en nuestras bases de datos y crear asi Claves Foraneas.
Ahora continuaremos creando nuestra segunda tabla que contendra la clave foranea referenciada al padre, la crearemos asi:
CREATE TABLE notas (
cod_nota int(100) NOT NULL auto_increment,
cod_alumno int(5) NOT NULL,
nota int(2) default NULL,
fecha timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (cod_nota),
KEY Fk_Alumno (cod_alumno),
CONSTRAINT Fk_Alumno FOREIGN KEY (cod_alumno) REFERENCES alumnos (cod_alumno) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB
Listo, ya hemos creado nuestra tabla referenciada a la tabla alumnos.. pero ¿que es lo que hemos echo ?
Lo que hemos echo a sido que, nuestra tabla notas quedo esta referenciada a nuestra tabla alumnos permitiendo que cuando en la tabla alumnos se elimine o actualize el campo cod_alumno en cascada, por tanto cada vez que realizemos una accion al campo cod_alumno de la tabla alumno esta accion se relacionara en la tabla notas.
Bueno espero que sea de ayuda y nos vemos en una proxima entrega, apenas tenga un tiempo
28-04-2012 17:22:Algo que olvide mencionarles es que el nombre de las claves Foraneas no se pueden repetir, por lo que esten atento a eso, en caso que les aparesca el siguiente error:
Can't create table './<db_name>/#sql-<text>.frm' (errno: 121)
es por que la Clave foranea esta mal escrita.