我是否需要为这种情况设置外键? 我在数据库设计方面很弱,尤其是在mysql中..我可能知道如果我想为它们设置外键,我应该为它们设置什么?如果人们删除...所有引用people_id将一起删除,是否可以设置表格太多? 谢谢回复
答案 0 :(得分:4)
是。外键约束强制实施参照完整性,这是确保数据可靠和高质量的关键原则。否则,您的people_address表可以引用people表中不存在的people_id值,并且可能是孤儿。外键约束可以防止这种情况发生。
所以,就这样做吧。没有充分的理由不这样做。
在people_email表中定义以下外键:
ALTER TABLE people_email ADD CONSTRAINT FOREIGN KEY(people_id)REFERENCES people(id)ON DELETE CASCADE;
这意味着您无法在people_email中输入记录,其中该表中的people_id不存在于人员中。此外,如果删除人员中的父行,则在people_email中引用它的行会自动删除。
我个人更喜欢手动删除子表中的所有行,但不使用级联删除。这是一个额外的应用程序开发工作,但它让我感觉更安全,也让我可以控制锁定并确保查询尽可能高效。