Mysql
 sql >> Base de données >  >> RDS >> Mysql

Clé étrangère MySQL utilisant plusieurs champs pour faire référence à une clé primaire d'une autre table

N'utilisez pas la même colonne pour les deux clés étrangères. Ceci est parfois appelé associations polymorphes , et cela enfreint les règles d'une bonne conception de base de données.

Cela devrait être un indice qu'il s'agit d'une mauvaise conception, qu'une contrainte FOREIGN KEY ne prend en charge qu'une seule table référencée. Il n'y a pas de support pour les associations polymorphes en SQL standard.

Au lieu de cela, créez deux colonnes, une pour une référence à Users, l'autre pour une référence à SystemProcesses. Une colonne par table référencée.

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

S'il n'y a pas de référence pertinente pour la colonne Users ou SystemProcesses, utilisez NULL pour indiquer qu'il n'y a pas de valeur applicable.

Vous pouvez consulter les autres questions auxquelles j'ai répondu sur les associations polymorphes .