外键的设计初衷是为了在数据库端保证对逻辑上相关联的表数据在操作上的一致性与完整性。
优点:
精简关联数据,减少数据冗余避免后期对大量冗余处理的额外运维操作。降低应用代码复杂性,减少了额外的异常处理相关数据管理全由数据库端处理。增加文档的可读性特别是在表设计开始,绘制 ER 图的时候,逻辑简单明了,可读性非常强。缺点:性能压力外键一般会存在级联功能,级联更新,级联删除等等。在海量数据场景,造成很大的性能压力。比如插入一条新记录,如果插入记录的表有 10 个外键,那势必要对关联的 10 张表逐一检查插入的记录是否合理,延误了正常插入的记录时间。并且父表的更新会连带子表加上相关的锁。其他功能的灵活性不佳比如,表结构的更新等。外键参照动作列表:
CASCADE:级联,子表跟随父表更新外键值SET NULL:子表更随主表更新外键值为 NULLRESTRICT/ NO ACTION:默认,限制父表改动外键值SET DEFAULT:目前产生的效果和 RESTRICT 相同。Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有