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

MySQL fremmednøgle bruger mere end ét felt til at referere til en primær nøgle fra en anden tabel

Brug ikke den samme kolonne for begge fremmednøgler. Dette kaldes nogle gange polymorfe associationer , og det bryder reglerne for godt databasedesign.

Det burde være et fingerpeg om, at det er et dårligt design, at en FOREIGN KEY-begrænsning kun understøtter én refereret tabel. Der er ingen understøttelse af polymorfe associationer i standard SQL.

Opret i stedet to kolonner, en til en reference til brugere, den anden til en reference til systemprocesser. Én kolonne pr. refereret tabel.

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

Hvis der ikke er nogen relevant reference for hverken kolonnen Brugere eller Systemprocesser, skal du bruge NULL for at angive, at der ikke er nogen relevant værdi.

Du vil muligvis gerne gennemgå andre spørgsmål, jeg har besvaret om polymorfe associationer .




  1. Flere bord samles i skinner

  2. Datarisikobegrænsning via datamaskering

  3. Oracle 12.2.0.1 kommer i 2016

  4. SQL-beregning til at finde tidsforskel