我是否需要爲這種情況設置外鍵? 我在數據庫設計方面很薄弱,特別是在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. 我應該設置AssemblyConfigurationAttribute嗎?
- 2. MySQL - 我有外鍵,但我不把它設置爲phpmyadmin中的外鍵?
- 3. 我應該真的使用外鍵嗎?
- 4. 我應該總是圍繞外鍵設計嗎?
- 5. 我應該明確設置屬性嗎?
- 6. 我已經設置了我的財產保留,即使它設置爲autorelease我應該釋放它嗎?
- 7. 如果將「on delete」設置爲CASCADE,那麼我應該爲mysql中的外鍵「更新」設置什麼?
- 8. 我的表不需要主鍵,我應該使用它嗎?
- 9. 我應該配置System.Windows.Media.Pen嗎?
- 10. MySQL:我需要一個外鍵嗎?
- 11. 你需要在MySQL中設置外鍵嗎?
- 12. 我應該結合我的MySQL表嗎?
- 13. 我應該使用外鍵連接這3個表嗎?
- 14. 我應該爲每個外鍵創建索引嗎?
- 15. 我應該驗證連接表中的外鍵嗎?
- 16. 我應該在外鍵的字段上指定INDEXES嗎?
- 17. 我應該使用外鍵或不
- 18. 如何設置默認= 1的外鍵應該工作?
- 19. 我應該設置爲_ITERATOR_DEBUG_LEVEL
- 20. 我應該索引一個外鍵?我應該使用這張表的主鍵嗎?
- 21. MySQL關係和約束,我應該使用它們嗎?
- 22. 我應該使用外鍵的外鍵還是字符串值?
- 23. 如何設置相關的顛覆外部?應該嗎?
- 24. 我應該用gettext代替它嗎?
- 25. AS3類 - 我應該使用它們嗎?
- 26. Elasticsearch fielddata - 我應該使用它嗎?
- 27. 我應該爲生產應用程序設置enableDebugLogging爲false嗎?
- 28. 我應該取消設置我的PHP數組值嗎?
- 29. 我應該在我的HttpHandlers中將IsReusable設置爲True嗎?
- 30. 在Cocoa中聲明對象時,我應該將它們設置爲零嗎?
我可以知道我應該設置什麼嗎?例如。將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