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.
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.
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.
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