【IT老齐012】数据库外键约束到底加还是不加?

262 阅读1分钟

配合视频效果更佳:www.itlaoqi.com/chapter.htm…

【阿里JAVA规范】不得使用外键与级联,一切外键概念必须在应用层解决。

每次做DELETE 或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦,测试数据极为不方便。

使用数据库外键约束的优势:

  • 保证数据的完整性和一致性
  • 级联操作方便
  • 数据一致性交给数据库,代码量小

缺点:

  • 性能问题
    • 额外的数据一致性校验查询
    • 并发问题外界约束
    • 会启用行级锁主表
    • 写入时会进入阻塞
  • 级联删除问题
    • 多层级联删除会让数据变得不可控
    • 触发器也严格被禁用

  • 数据耦合问题
    • 数据库层面数据关系产生耦合
    • 数据迁移维护困难