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

Clave externa de MySQL que usa más de un campo para hacer referencia a una clave principal de otra tabla

No use la misma columna para ambas claves foráneas. Esto a veces se denomina asociaciones polimórficas y rompe las reglas del buen diseño de bases de datos.

Debería ser una pista de que es un mal diseño, que una restricción FOREIGN KEY solo admite una tabla referenciada. No hay soporte para asociaciones polimórficas en SQL estándar.

En su lugar, cree dos columnas, una para una referencia a Usuarios y la otra para una referencia a SystemProcesses. Una columna por tabla referenciada.

Logs
uid (INT)  UsersID (INT)  SystemProcessesID (INT) Action
1          2              NULL                    Jane Doe did this
2          1              NULL                    John Doe did that
3          1              1                       Hitman just killed John Doe

Si no hay una referencia relevante para la columna Usuarios o SystemProcesses, use NULL para indicar que no hay un valor aplicable.

Es posible que desee revisar otras preguntas que he respondido sobre asociaciones polimórficas .