Nepoužívejte stejný sloupec pro oba cizí klíče. Někdy se tomu říká polymorfní asociace a porušuje pravidla dobrého návrhu databáze.
Mělo by být vodítkem, že jde o špatný návrh, že omezení FOREIGN KEY podporuje pouze jednu odkazovanou tabulku. Standardní SQL nepodporuje polymorfní asociace.
Místo toho vytvořte dva sloupce, jeden pro odkaz na uživatele a druhý pro odkaz na systémové procesy. Jeden sloupec na odkazovanou tabulku.
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
Pokud pro sloupec Uživatelé nebo Systémové procesy neexistuje žádný relevantní odkaz, použijte hodnotu NULL k označení, že neexistuje žádná použitelná hodnota.
Možná si budete chtít přečíst další otázky, na které jsem odpověděl o polymorfních asociacích .