sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo probar tablas vinculadas con claves foráneas?

Como se menciona en los comentarios, primero debe eliminar las tablas con restricciones FK en otras tablas, luego puede eliminar las tablas a las que se vincula.

Ejemplo:

User
  id: 1
  name: Mike

Address 
  id: 1
  user_id: 1 (FK constraint to User.id table.column)
  address_1: 555 Main Street

Esta configuración es una relación 1:1 (más información sobre la normalización de datos ), donde una fila de usuario puede hacer referencia a una fila de dirección, y debido a que la fila de dirección depende de la existencia de la fila de usuario, si intenta eliminar la fila de usuario, verá los errores que mencionó.

Pero si primero suelta la tabla de direcciones, todo funciona como se esperaba porque la tabla de usuarios no es FK para ninguna otra tabla.

Garantizar la integridad referencial dentro de su esquema asegura que no terminará con filas huérfanas, que impregnarán toda su aplicación basada en datos.

También puede emitir los siguientes comandos:

SET foreign_key_checks = 0;
# Do Stuff
SET foreign_key_checks = 1;

Pero desaconsejaría encarecidamente esto, ya que podría romper la integridad referencial de sus datos y terminar en un verdadero desastre. He visto a alguien hacer esto en un entorno empresarial y les tomó semanas limpiarlo. Sin embargo, si está haciendo esto ESTRICTAMENTE con fines de prueba; como escribir pruebas unitarias, o simplemente aprender, y no quería dejar caer las tablas cada vez, podría hacer esto:

# Because we remove the foreign key check, we can truncate in any order
SET foreign_key_checks = 0;
TRUNCATE TABLE user;
TRUNCATE TABLE address;
SET foreign_key_checks = 1;

El diseño adecuado del esquema utilizando restricciones de clave externa ayuda a construir una buena base para cualquier aplicación basada en datos. Tomará tiempo entender cuándo usar y cómo construir restricciones de clave externa, pero con el tiempo comenzará a comprender. Una buena manera de comenzar es descargar un proyecto de código abierto como magento , wordpress o vbulletin y echa un vistazo a sus esquemas. Incluso puede hacer una introspección de estos esquemas usando MySQL workbench y ver sus Diagramas de relación de entidad (ERD), que demostrarán visualmente los vínculos entre las tablas.