无需FK即可保持引用完整性

问题描述

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

解决方法

将外键作为数据库设计的一部分是一种好习惯。始终使用RDBMS开箱即用是更好的选择,而不是尝试重新发明轮子。

外键除了维护数据库参照完整性外,还可以在执行查询时提供性能优势。 git switch rather than checkout

如果您不想具有外键并希望确保引用完整性,则可以考虑以下选项:

  • 为所有插入创建存储过程。该存储过程首先检查父级的存在,然后再将记录插入子级。否则会引发异常
  • 在父表,子表中创建INSERT,UPDATE,DELETE触发器并相应地处理引用完整性
  • 如果已加载ETL,则可以考虑在插入数据之前让Lookups处理引用完整性。错误行可以移动到单独的错误目的地。