为什么在数据库中不推荐使用外键?

为什么在数据库中不推荐使用外键?

外键:外键用来和其他表建立联系用,外键是另一表的主键,外键是可以有重复的,可以是空值。一个表可以有多个外键。

为什么不用外键:

  1. 增加了工作的复杂性:每次做DELETE或者UPDATE时都必须考虑外键约束,这样我们在开发和测试数据时会极其痛苦;并且外键的主从关系是固定的,当需求发生变化进行修改时会带来很多麻烦。
  2. 对分库分表不友好:因为分库分表下外键是无法生效的。

但其实外键本身也是有好处的,比如:

  1. 保证了数据库数据的一致性和完整性
  2. 级联操作方便,减轻了程序代码量.......

阿里巴巴开发手册中说到:【强制】不得使用外键与级联,一切外键概念必须在应用层解决。

但在我看来,归根结底是因为我们想让数据和业务分开来。数据是数据,业务是业务。数据库只保存数据,尽量不要牵扯上业务逻辑(除必要逻辑外,比如权限管理等)。

你可能感兴趣的:(数据库,mysql)