visual studio microsoft espaƱol descargar community asp.net sql vb.net normalization rdbms

asp.net - microsoft - visual studio installer



Dos claves externas que hacen referencia a la misma clave principal (3)

La opción 1 es una solución perfecta. Puede definir la restricción de clave externa como sigue

1ª restricción de clave foránea para la columna Timesheet_For

ALTER TABLE TIMESHEETTABLE ADD CONSTRAINT fk_TimesheetTable_EmployeeTable FOREIGN KEY (TIMESHEET_FOR) REFERENCES EMPLOYEETABLE(EMPLOYEE_ID)

2a restricción de clave foránea para la columna Entered_By

ALTER TABLE TIMESHEETTABLE ADD CONSTRAINT fk_TimesheetTable_EmployeeTable_1 FOREIGN KEY (ENTERED_BY) REFERENCES EMPLOYEETABLE(EMPLOYEE_ID)

¿Está bien tener dos claves externas en una tabla que hacen referencia a una clave principal de otra tabla?

EmployeeID es una clave principal en la tabla de empleados y aparece como una clave externa dos veces en la tabla de hojas de tiempo.

Habrá pocos usuarios administradores llenando hojas de tiempo en nombre de otros empleados.

En el campo de la tabla de hoja de tiempo ''TimsheetFor'' tendrá el ID de empleado de esa persona que ha trabajado en proyectos y el campo ''EnteredBy'' o ''FilledBy'' tendrá el ID de la persona que completó esta hoja de tiempo.

¿Cuál de las siguientes opciones es correcta?

NOTA: Las tablas muestran solo aquellos campos que están relacionados con esta pregunta.


Yo iría con la opción 1 . Es perfectamente correcto tener dos columnas de clave externa que hagan referencia a la misma columna de clave principal en una tabla diferente, ya que cada valor de clave externa hará referencia a un registro diferente en la tabla relacionada.

Estoy seguro de que la opción 2 funcionaría, pero esencialmente tendrías una relación 1 a 1 entre TIMESHEET_TABLE y TIMESHEET_FILLED_BY , haciendo que dos tablas sean innecesarias y más difíciles de mantener.

De hecho, si se requieren los pares ENTERED_BY y TIMESHEET_FOR en pares, usar la opción 1 tiene mucho más sentido, ya que la base de datos y las claves externas aplican automáticamente esta opción .


sí, no hay problema con eso ... puede usar una clave principal de una tabla en otra tabla como clave externa dos veces.