0

例如,如果关系数据库有一个表Suppliers,其中的值Suppliers.ID用于其他表的列中,例如Invoice.Supplier,如果用户想要“从系统中删除供应商 15”会发生什么?

4

3 回答 3

2

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

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

于 2013-02-08T02:11:30.250 回答
0

这取决于 Invoice 和 Supplier 之间关系的性质:

没有供应商可以存在发票吗?如果可以,您可以决定取消所有引用已删除供应商的列。如果不能,您可以决定删除属于已删除供应商的发票(如果您可以将发票视为供应商对象的子对象),或者您可以阻止删除供应商因为有任何发票提到它。

于 2013-02-08T02:14:21.577 回答
0

详细说明@DanBracuk 的评论。

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

当您“删除”该供应商时,将其设置为 1 并且不再在您的用户界面中显示它,除非在供应商的主列表中,以便可以重新打开

大多数商业会计软件包都使用类似的东西,在大多数情况下,如果您知道非活动供应商的名称,您可以将其输入下拉列表(并且将被接受),但它不会出现在下拉列表中。

于 2013-02-08T03:39:33.387 回答