En este post de base de datos en MySQL te mostraré cómo crear una tabla con relaciones, es decir, un ejemplo de uso para que puedas guiarte. Simplemente vamos a relacionar dos tablas usando foreign key y primary key.

Vamos a relacionar las tablas en el momento de la creación de las mismas.

Sintaxis

Si solo vienes por la sintaxis o un ejemplo simple para relacionar tablas, recuerda que en la principal debes declarar un id (puede ser autoincrementable) que sea la primary key:

CREATE TABLE tabla(
    id bigint unsigned not null primary key auto_increment,
    otro_campo varchar(255) not null
);

Presta atención al tipo de dato. En este caso es un bigint unsigned. Ahora en la otra tabla haces dos cosas; declaras el id de la tabla a la que te refieres, y luego usas foreign key para indicar la relación:

CREATE TABLE otra_tabla(
    id bigint unsigned not null primary key auto_increment,
    un_campo varchar(255) not null,
    id_tabla_principal bigint unsigned not null,
    foreign key (id_tabla_principal) references tabla(id) on delete cascade on update cascade
);

Si te fijas, estamos declarando también el id propio de la segunda tabla.

Lo que crea la relación es declarar el campo id_tabla_principal que relacionará a la otra tabla, y la relación se indica usando foreign key indicando que se va a usar la columna id_tabla_principal la cual se refiere a la columna id dentro de la tabla llamada tabla.

De este modo puedes relacionar varias tablas entre sí, ya sea con un campo, dos, o más. En el ejemplo voy a relacionar más tablas.

Ejemplo

Lo que vamos a hacer para ejemplificar es relacionar 3 tablas. Las segundas no tienen relación entre sí, pero la tercera las va a tener una relación de ambas:

CREATE TABLE estudiantes(
    id bigint unsigned not null primary key auto_increment,
    nombre varchar(255) not null,
    grupo varchar(255) not null
);

CREATE TABLE materias(
    id bigint unsigned not null primary key auto_increment,
    nombre varchar(255) not null
);

CREATE TABLE notas_estudiantes_materias(
    id bigint unsigned not null primary key auto_increment,
    id_estudiante bigint unsigned not null,
    id_materia bigint unsigned not null,
    puntaje decimal(9,2) not null,
    foreign key (id_estudiante) references estudiantes(id) on delete cascade on update cascade,
    foreign key (id_materia) references materias(id) on delete cascade on update cascade
);

En este caso es para relacionar estudiantes, notas y materias. Es un ejemplo sencillo que convertido a diagrama se ve así:

Tablas relacionadas en MySQL
Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto