我有一个应用程序,其中大多数数据库表与另一个表有很强的关系.目前我正在使用外键强制引用完整性,但我想知道这是否真的是最好的方法.主表中的数据可以由业务用户从管理界面中删除,这意味着必须进行级联删除(或编写几个删除语句),但我不确定我是否真的想要删除所有其他数据同一时间.它可能是很多*可能*在以后有用的数据(报告可能?).但是,除非与主表存在关系,否则辅助表中的数据对应用程序本身基本无用.
鉴于该选项,我总是保留数据.由于您已经安装了外键,因此您可以获得一些内置的完整性违规保护.
如果用户想要的是"删除"记录,从而将其隐藏在应用程序中,请考虑"虚拟删除"策略 - 将记录标记为非活动状态,而不是将其从数据库中物理删除.
至于实现,根据您的数据库,添加等于表的布尔/位逻辑的任何内容.默认情况下,所有行都被赋值为true/1; "删除"标记为false/0.