问题答案
Mysql外键是用来保证数据的完整性和一致性的,但不是所有的存储引擎都支持外键:
mysql存储引擎比较
 
显然只有常用的InnoDB存储引擎支持外键,那么到底应不应该使用外键呢?
标签:
答案
一般数据库属于持久层,尽量把业务逻辑转移到应用层,外键会使表之间耦合太大,所以建议靠程序去检测和数据库的事务来保证数据的完整性和一致性;另外外键需要额外的资源进行数据完整性和一致性检验,更容易造成死锁,数据库更容易达到瓶颈,特别是表的扩展能力大大受限。
 
当然也要看你的系统,如银行系统等需要很高的安全性和可靠性还是建议使用外键,另外利用外键检测数据还能减少程序开发量;但是大部分web项目都是追求体验、性能,对数据并不是非常严格,还是不建议使用;
举一反三