Tablas relacionadas en MySQL
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.
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.
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í:
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…
Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
Esta web usa cookies.