我是否需要为这种情况设置外键? 我在数据库设计方面很薄弱,特别是在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