"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 extranjera hacer referencia a múltiples claves primarias simultáneamente?

¿Puede una clave extranjera hacer referencia a múltiples claves primarias simultáneamente?

Publicado el 2025-03-22
Navegar:889

Can a Foreign Key Reference Multiple Primary Keys Simultaneously?

manejo de relaciones complejas de clave extranjera en el diseño de la base de datos

Guión

Este ejemplo explora un desafío de diseño de base de datos común: crear una relación de clave extranjera donde una sola tabla necesita hacer referencia a las claves primarias de varias otras tablas. El escenario específico implica la tabla deducciones que necesita vincular a ambos empleados_ce y empleados_sn tablas.

el problema y su solución

La pregunta es si una clave extranjera en deducciones puede hacer referencia directamente a las claves primarias en ambas empleados_ce y empleados_sn simultáneamente. La respuesta es: no directamente, en una base de datos relacional estándar. Una sola clave extranjera solo puede hacer referencia a una sola clave primaria.

La solución propuesta aprovecha un modelo de herencia bien estructurado para resolver esto.

enfoque basado en la herencia

las tablas empleados , empleados_ce , y empleados_sn representan una jerarquía de herencia. empleados es la tabla base, con empleados_ce y empleados_sn como tablas especializadas heredando de él.

estructura de base de datos:

employees (id INT PRIMARY KEY, name VARCHAR(255))
employees_ce (id INT PRIMARY KEY, ce_specific_attribute VARCHAR(255), employee_id INT, FOREIGN KEY (employee_id) REFERENCES employees(id))
employees_sn (id INT PRIMARY KEY, sn_specific_attribute VARCHAR(255), employee_id INT, FOREIGN KEY (employee_id) REFERENCES employees(id))

Solución:

en lugar de un enlace directo a ambos empleados_ce y empleados_sn , la tabla deducciones debe hacer referencia a la tabla principal común, empleados :

]
deductions (id INT PRIMARY KEY, employee_id INT, deduction_amount DECIMAL(10,2), ..., FOREIGN KEY (employee_id) REFERENCES employees(id))

Este enfoque garantiza la integridad referencial y evita la redundancia. El empleado_id in deducciones enlaces al registro del empleado en empleados , independientemente de si ese empleado tiene información adicional en empleados_ce o empleados_sn . Este diseño administra eficientemente la relación y mantiene la consistencia de datos.

Ú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