Mysql
 sql >> Database >  >> RDS >> Mysql

Chiave esterna MySQL che utilizza più di un campo per fare riferimento a una chiave primaria da un'altra tabella

Non utilizzare la stessa colonna per entrambe le chiavi esterne. Questo è talvolta chiamato associazioni polimorfiche , e infrange le regole di una buona progettazione di database.

Dovrebbe essere un indizio che si tratta di una cattiva progettazione, che un vincolo FOREIGN KEY supporta solo una tabella di riferimento. Non c'è supporto per le associazioni polimorfiche in SQL standard.

Creare invece due colonne, una per un riferimento a Users, l'altra per un riferimento a SystemProcesses. Una colonna per tabella referenziata.

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 non sono presenti riferimenti rilevanti per la colonna Utenti o Processi di sistema, utilizzare NULL per indicare che non esiste un valore applicabile.

Potresti voler rivedere altre domande a cui ho risposto sulle associazioni polimorfiche .