Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Chave estrangeira do MySQL usando mais de um campo para fazer referência a uma chave primária de outra tabela


Não use a mesma coluna para ambas as chaves estrangeiras. Isso às vezes é chamado de associações polimórficas , e quebra as regras do bom design de banco de dados.

Deve ser uma pista de que é um design ruim, que uma restrição FOREIGN KEY suporta apenas uma tabela referenciada. Não há suporte para associações polimórficas no SQL padrão.

Em vez disso, crie duas colunas, uma para referência a Users e outra para referência a SystemProcesses. Uma coluna por tabela 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

Se não houver referência relevante para a coluna Users ou SystemProcesses, use NULL para indicar que não há valor aplicável.

Você pode revisar outras perguntas que respondi sobre associações polimórficas .