Conceptos básicos de claves extranjeras en MySQL?

¿Hay alguna buena explicación de cómo usar la construcción de clave foránea de MySQL?

No lo entiendo completamente de los documentos de MySQL. Hasta ahora he estado manejando cosas como llaves extranjeras con combinaciones y código de progtwigción.

Y la segunda parte de la pregunta, ¿hay alguna mejora que se pueda hacer usando las claves externas incorporadas de MySQL?

FOREIGN KEYS solo asegúrese de que sus datos sean consistentes.

No mejoran las consultas en sentido de eficiencia, solo hacen que algunas consultas incorrectas fallen.

Si tienes una relación como esta:

 CREATE TABLE department (id INT NOT NULL) CREATE TABLE employee (id INT NOT NULL, dept_id INT NOT NULL, FOREIGN KEY (dept_id) REFERENCES department(id)) 

, entonces no puede eliminar un department si tiene algunos employee .

Si proporciona ON DELETE CASCADE a la definición FOREIGN KEY , las filas de referencia se eliminarán automáticamente junto con las referenciadas.

Como una restricción, FOREIGN KEY realmente ralentiza un poco las consultas.

Se debe realizar una comprobación adicional al eliminar de una tabla referenciada o al insertarla en una referencia.

Los principales beneficios del uso de claves externas reales son garantizar la integridad de los datos y poder configurar acciones en cascada en elementos relacionados cuando se modifica o elimina algo.

Por ejemplo, imagina que estás progtwigndo un foro. Tiene una tabla de “temas” con topics.topic_id clave topics.topic_id y tiene una tabla de “publicaciones” donde las publicaciones se adjuntan a temas con la columna posts.topic_id , que es una clave externa a la tabla de temas.

Esta relación de clave externa garantiza que cada publicación se adjunte a un tema válido. Si el único tema que tiene tiene ID # 1, es imposible que exista una publicación en la base de datos adjunta al tema # 2. La base de datos lo asegura.

Para el beneficio en cascada, puede configurarlo de modo que si se elimina un tema de la tabla de temas, la base de datos borre automáticamente todas las publicaciones en la tabla de publicaciones que se adjuntaron a este tema. Esto es bueno porque elimina un paso que debe recordar hacer manualmente, lo que puede ser bastante complejo cuando tiene muchas tablas vinculadas entre sí. Con las claves externas, todas las relaciones se pueden limpiar automáticamente.

1. LLAVES ESTRICTAS solo asegúrate de que tus datos sean consistentes.

2. Si aplicamos en eliminar cascada a la definición de clave externa, la fila de referencia se eliminará automáticamente cuando la fila principal se eliminará.

3. Si aplicamos en Update Cascade a la definición de clave externa, la fila Child se actualizará automáticamente cuando se actualice la fila padre.

Consulta: ALTER TABLE niño ADD FOREIGN KEY (parent_id) REFERENCES parent (id) ON UPDATE CASCADE ON DELETE CASCADE;

  1. no puede eliminar la tabla primaria directa, primero elimine la clave foránea de la tabla secundaria antes que eliminar la tabla principal.

La principal ventaja es que puede limitar qué valores puede ingresar en la tabla; si intenta ingresar un valor que no existe en la tabla referenciada, no podrá hacerlo.

Además, si actualiza o elimina el valor en la tabla a la que se hace referencia, puede configurarlo para actualizar automáticamente el valor o eliminar en cascada cualquier fila que contenga ese valor.

De hecho, es una gran característica que aprovecha su código.