如何处理关系数据库中的删除



例如,如果关系数据库有一个表Suppliers,其中Suppliers.ID的值在其他表(如Invoice.Supplier)的列中使用,如果用户希望"从系统中删除供应商15",该怎么办?

如果Supplier 15Invoice表中有记录。rdbms将抛出引用完整性错误,因为Supplier 15是相关的,并且在其他表中有记录。

处理这种删除将取决于您的业务规则。您应该先删除相关记录,还是可以阻止用户删除其他表中使用的记录。

这取决于发票和供应商之间关系的性质:

发票是否可以在没有供应商的情况下存在?如果可以的话,您可以决定取消引用已删除的供应器的所有列。如果不能,您可以决定删除属于已删除供应商的发票(如果您可以将发票视为供应商对象的子对象),也可以阻止删除供应商,只要有任何发票引用它。

详细介绍@DanBracuk的评论。

在表InActive bit NOT NULL DEFAULT 0中添加一列。

当你"删除"该供应商时,将其设置为1,并且不再在你的用户界面中显示它,除非在供应商的主列表中,这样它就可以在上返回

大多数商业会计软件包都使用这样的东西,在大多数情况下,如果你知道一个不活跃供应商的名称,你可以将其输入到下拉列表中(它将被接受),但它不会出现在下拉列表中。

最新更新