在没有 FK 的情况下保持参照完整性

Maintain referential integrity without FK

请提出一些在现有数据库中没有 FK 的情况下保持参照完整性的最佳方法。计划从某些表中删除 FK。我们如何保持参照完整性。

将外键作为数据库设计的一部分是一种很好的做法。总是利用 RDBMS 开箱即用的东西更好,而不是试图重新发明轮子。

外键除了维护数据库参照完整性外,还在执行查询时提供性能优势。 Read FK and performance benefits

如果你不想有外键,又想保证引用完整性,你可以考虑以下选项:

  • 为所有插入创建存储过程。存储过程首先检查父项是否存在,然后再向子项插入记录。否则,它抛出异常
  • 在父表、子表中创建 INSERT、UPDATE、DELETE 触发器并相应地处理参照完整性
  • 如果您有 ETL 负载,您可以考虑在插入数据之前使用查找来处理参照完整性。错误行可以移动到单独的错误目标。