Gebruik niet dezelfde kolom voor beide externe sleutels. Dit wordt soms polymorfe associaties genoemd , en het overtreedt de regels van een goed databaseontwerp.
Het zou een aanwijzing moeten zijn dat het een slecht ontwerp is, dat een FOREIGN KEY-beperking slechts één tabel waarnaar wordt verwezen ondersteunt. Er is geen ondersteuning voor polymorfe associaties in standaard SQL.
Maak in plaats daarvan twee kolommen, één voor een verwijzing naar Gebruikers, de andere voor een verwijzing naar Systeemprocessen. Eén kolom per tabel waarnaar wordt verwezen.
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
Als er geen relevante verwijzing is voor de kolom Gebruikers of Systeemprocessen, gebruikt u NULL om aan te geven dat er geen toepasselijke waarde is.
Misschien vind je het leuk om andere vragen te bekijken die ik heb beantwoord over polymorfe associaties .