知识卡片
避免跨上下文表间外键约束
内容
无论单体架构还是数据库共享风格的微服务,都应从一开始就避免在分属两个限界上下文的表之间建立外键约束关系。某些关系型数据库借外键提供级联更新与删除,这种功能反过来会影响代码实现;一旦因分库而去掉外键,需要修改的代码太多,会导致演进成本太高,甚至因疏漏引入隐藏bug。发散:外键是一种把”跨上下文一致性”下沉到数据库层的隐性耦合,它让分库这件本该只是运维动作的事,变成了牵一发动全身的重构。
参考来源
- 位置:《解构领域驱动设计》第18章《领域驱动设计的战略考量》18.1.2(源文件:_epub-src/OEBPS/031.xhtml)
- 结论依据:原文指出跨上下文表间外键会因级联功能影响代码,分库去除时改动巨大,因此建议一开始就避免。
- 原始内容:都需要一开始就注意避免在分属两个限界上下文的表之间建立外键约束关系……一旦因为分库而去掉表之间的外键约束关系,需要修改的代码太多,就会导致演进的成本太高。