我是否需要爲這種情況設置外鍵? 我在數據庫設計方面很薄弱,特別是在mysql中......我可以知道如果我想爲他們設置外鍵,我應該爲他們設置什麼?如果人們刪除...所有引用people_id將一起刪除,是否可以設置,而表太多? THX答覆MySQL外鍵:我應該設置它嗎?
1
A
回答
4
是。外鍵約束強制引用完整性,這是確保您的數據可靠和高質量的關鍵原則。否則,您的people_address表可能會引用people表中不存在的people_id值,並且會是孤兒。外鍵約束可以防止這種情況發生。
所以,就這樣做。真的沒有理由不這樣做。
定義外鍵,如在people_email表如下:
ALTER TABLE people_email添加約束外鍵(people_id)參考文獻人(ID)ON DELETE CASCADE;
這將意味着您無法在people_email中輸入該人員中不存在該表中的people_id的記錄。此外,如果您刪除人員中的父行,那麼在people_email中引用它的行將被自動刪除。
我個人更喜歡手動刪除子表中的所有行,但不使用級聯刪除。這是一些額外的應用程序開發工作,但它讓我感覺更安全,並且允許我對鎖定進行一些控制,並確保查詢儘可能高效。
相關問題
- 1. MySQL - 我有外鍵,但我不把它設置爲phpmyadmin中的外鍵?
- 2. 我應該真的使用外鍵嗎?
- 3. 我應該總是圍繞外鍵設計嗎?
- 4. 我應該明確設置屬性嗎?
- 5. 我的表不需要主鍵,我應該使用它嗎?
- 6. 我應該配置System.Windows.Media.Pen嗎?
- 7. MySQL:我需要一個外鍵嗎?
- 8. 我應該爲每個外鍵創建索引嗎?
- 9. 如何設置默認= 1的外鍵應該工作?
- 10. 我應該索引一個外鍵?我應該使用這張表的主鍵嗎?
- 11. 我應該使用外鍵的外鍵還是字符串值?
- 12. MySQL關係和約束,我應該使用它們嗎?
- 13. AS3類 - 我應該使用它們嗎?
- 14. Rails:in_place_select設置外鍵
- 15. SQLite外鍵設置
- 16. 我在這個mySQL外鍵設置上做了什麼錯誤?
- 17. 我應該如何使用MySQL構建我的設置表?
- 18. 我應該在我的HttpHandlers中將IsReusable設置爲True嗎?
- 19. 我應該取消設置我的PHP數組值嗎?
- 20. 在Cocoa中聲明對象時,我應該將它們設置爲零嗎?
- 21. 網站偏好設置,我應該將它保存在數據庫表中嗎?
- 22. MUL設置OF當它不應該
- 23. Mysql。我應該使用ID嗎?
- 24. MySQL:我應該打擾整理嗎?
- 25. C#我應該在for循環之外放置Sql/OleDb transaction.Commit()嗎?
- 26. 應該將autovacuum設置爲on嗎?
- 27. 我的AVD沒有加載什麼設置,我應該用它來運行它
- 28. 我可以爲主鍵設置ignore_dup_key嗎?
- 29. 我應該將外鍵的公共屬性添加到我的表中嗎?
- 30. WPF:我應該是設計師嗎?
我可以知道我應該設置什麼嗎?例如。將people_address中的people_id設置爲primary,然後將外鍵鏈接到db.people.id並級聯爲update和delete?我希望地址在人們刪除時會被刪除。當人們更新人不會影響地址,除了人們正在編輯地址... – 1myb 2011-04-06 02:22:13
@ spencer-lim我根據你的問題更新了我的答案。 – squawknull 2011-04-06 02:28:53