[英]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.