Tutorial Mysql – Relaciones entre tablas y su integridad referencial

Ejemplo de Tablas relacionales en MySql

Muchos habreis tenido problemas al crear tablas relacionadas con MySql, pero de verdad que es bastante sencillo, solo hay que tener en cuenta una serie de premisas:

  • Las tablas que se van a relacionar tienen que ser tipo InnoDb(InnoDB es el primer tipo de tabla que permite definir estricciones de claves foráneas para garantizar la integridad de los datos).
  • Usar sintaxis FOREIGN KEY (campo_fk) REFERENCES nombre_tabla(nombre_campo)
  • Crear un gndice en el campo que ha sido declarado claveforánea

Es necesario el uso de índices para que la verificación de las claves foráneas sea más rápida. Vamos a ver un ejemplo de una definición de 2 tablas relacionadas. Clientes y privilegios:

[mysql]
CREATE TABLE clientes
(
id_cliente INT NOT NULL AUTO_INCREMENT,
nombre VARCHAR(30),
PRIMARY KEY (id_cliente)
) TYPE = INNODB;

CREATE TABLE privilegios
(
id_privilegio INT NOT NULL AUTO_INCREMENT,
id_cliente INT NOT NULL,
privilegio INT(2),
PRIMARY KEY(id_privilegio),
INDEX (id_cliente),
FOREIGN KEY (id_cliente) REFERENCES clientes(id_cliente)
) TYPE = INNODB;
[/mysql]

De esta manera estamos relacionando la tabla clientes y privilegios por el campo id_cliente.

La clave foránea (FOREIGN KEY) y la Referenciada tienen que tener tipos de datos similares para que puedan ser comparadas sin la necesidad de hacer una conversión de tipos.

Ahora ya tenemos las tablas relacionadas y seguro que os haceis la siguiente pregunta:

“¿Cómo inserto registros en las tablas que tengan claves foráneas (FOREIGN KEYS)?”

Read More