"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Puede una clave externa hacer referencia a varias tablas en SQL?

¿Puede una clave externa hacer referencia a varias tablas en SQL?

Publicado el 2024-11-20
Navegar:259

Can a Foreign Key Reference Multiple Tables in SQL?

Restricciones de clave externa polimórfica: un enfoque versátil

La restricción de clave externa convencional establece un vínculo directo entre dos tablas especificadas. Sin embargo, ¿qué sucede si necesita una relación polimórfica donde una columna hace referencia a una de varias tablas principales posibles?

¿Es posible una clave externa para varias tablas?

Desafortunadamente, la respuesta es negativa. Una restricción de clave externa solo puede hacer referencia a una única tabla principal. Esta limitación surge de la necesidad de integridad y coherencia de los datos en los sistemas de bases de datos.

Consideraciones prácticas

A pesar de la limitación inherente, existen enfoques prácticos que emulan el comportamiento de un Clave externa para varias tablas:

  1. Tabla de unión: Cree una única tabla de unión que incorpore columnas de todas las tablas principales posibles. La columna de clave externa en la tabla secundaria hace referencia a la tabla de unión. Al insertar o actualizar datos, la tabla de unión determina en qué tabla principal real insertar o actualizar.
  2. Columna de tipo: Introduzca una columna de tipo en la tabla secundaria para diferenciar entre posibles tipos de tablas principales . La columna de clave externa luego hace referencia a la tabla principal correspondiente al tipo especificado en la columna de tipo.

Ejemplos en MySQL y PostgreSQL

En MySQL, lo siguiente La declaración crea una tabla de unión:

CREATE TABLE union_table AS
SELECT * FROM subordinates
UNION ALL
SELECT * FROM products;

La restricción de clave externa en la tabla secundaria sería:

ALTER TABLE images
ADD FOREIGN KEY (person_id) REFERENCES union_table(id);

En PostgreSQL, se utiliza un enfoque similar:

CREATE TABLE union_table AS
SELECT * FROM subordinates
UNION ALL
SELECT * FROM products;

La restricción de clave externa se convierte en:

ALTER TABLE images
ADD FOREIGN KEY (person_id) REFERENCES union_table(id);

Conclusión

Si bien una clave externa directa para múltiples tablas no es factible, estrategias alternativas permiten una clave externa polimórfica relación clave en los sistemas de bases de datos SQL. Estas estrategias preservan la integridad de los datos y al mismo tiempo brindan la flexibilidad de acomodar múltiples tablas principales.

Declaración de liberación Este artículo se reimprime en: 1729692611 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3