配合视频效果更佳:www.itlaoqi.com/chapter.htm…
【阿里JAVA规范】不得使用外键与级联,一切外键概念必须在应用层解决。
每次做DELETE 或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦,测试数据极为不方便。
使用数据库外键约束的优势:
- 保证数据的完整性和一致性
- 级联操作方便
- 数据一致性交给数据库,代码量小
缺点:
- 性能问题
-
- 额外的数据一致性校验查询
- 并发问题外界约束
- 会启用行级锁主表
- 写入时会进入阻塞
- 级联删除问题
-
- 多层级联删除会让数据变得不可控
- 触发器也严格被禁用
- 数据耦合问题
-
- 数据库层面数据关系产生耦合
- 数据迁移维护困难