一个表中的字段,被另一个表引用。 主表 的值给 从表 引用。
从表添加值,必须在主表中找到相应的存在。创建时先创建主表,删表时先删从表。
主表被引用的必须保证唯一,添加唯一约束或主键约束
阿里禁用外键
在阿里开发规范当中是禁用外键的,一切外键的概念都必须在应用层解决。
外键不好的地方:
每次做DELETE或者UPDATE都必须考虑外键约束,会导致开发时更困难,测试数据极为不方便
外键的优点:
保证数据的完整性和一致性,级联操作方便,数据一致性交给数据库,代码量小
使用外键后会产生的问题:
性能问题,额外的数据一致性校验查询。
并发问题,外键约束会启用行级锁,主表写入时会进入阻塞。
级联删除问题,多层级联删除会上数据变得不可控,触发器也严格被禁用。
数据耦合,数据库层面数据关系产生耦合,数据迁移维护困难