簡體   English   中英

MySQL外鍵使用多個字段來引用另一張表中的主鍵

[英]MySQL foreign key using more than one field to reference to a primary key from another table

我想將一個表中的2列引用到另一個表中的主鍵。 這是在db結構中的樣子:

Users
uid (INT)  name (VARCHAR)
1          John Doe
2          Jane Doe

SystemProcesses
uid (INT)  name (VARCHAR)
1          Hitman
2          Cron

Logs
uid (INT)  modelType (VARCHAR)  modelUID (INT)  Action
1          Users                2               Jane Doe did this
2          Users                1               John Doe did that
3          SystemProcesses      1               Hitman just killed John Doe

如何將“日志”表中的modelType和modelUID引用到這些User和SystemProcesses?

如果不可能的話,替代方案是什么?

兩個外鍵不要使用同一列。 有時稱為多態關聯 ,它破壞了良好數據庫設計的規則。

應該指出這是一個錯誤的設計,FOREIGN KEY約束僅支持一個引用表。 在標准SQL中不支持多態關聯。

而是,創建兩列,一列用於引用Users,另一列用於引用SystemProcesses。 每個引用表一列。

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

如果“用戶”或“系統進程”列都沒有相關的引用,請使用NULL表示沒有適用的值。

您可能想回顧一下我回答的有關多態關聯的其他問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM