MySQL外鍵引用非唯一索引
與傳統的資料庫理論不同,MySQL允許外鍵約束引用被引用表中的非唯一鍵。這可能會在約束執行上造成歧義,尤其是在處理「ON DELETE CASCADE」行為時。
瞭解外鍵約束
外鍵限制確保子表(Table1)中的一行引用父表(Table2)中的一行有效資料。通常,此限制要求被引用列(兩表中的column2)之間存在一對一的關係。
MySQL的非唯一索引引用
然而,在MySQL中,外鍵可以引用非唯一列(Table2中的column2)。這放寬了傳統的一對一要求,允許多個子表行引用父列中的相同值。非唯一索引的存在是為了提高搜尋可能存在於多行的值的查詢效能。
實際考慮
雖然MySQL支援此行為,但出於實際原因,應避免外鍵引用非唯一列。當使用「ON DELETE CASCADE」行為時,刪除父表(Table2)中的一行可能會導致級聯刪除子表(Table1)中的多行,這可能會產生意想不到的後果。
MySQL文件指導
MySQL文件明確建議不要使用引用非唯一鍵或可空鍵的外鍵。它建議將外鍵限制為僅引用唯一且非空鍵,以獲得明確定義的行為。
以上是MySQL 外鍵可以引用非唯一索引嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!