例如,如果关系数据库有一个表Suppliers
,其中Suppliers.ID
的值用于Invoice.Supplier
等其他表的列中,那么如果用户需要,会发生什么? “从系统中移除供应商15”?
答案 0 :(得分:2)
如果Supplier 15
在Invoice
表中有记录。由于Supplier 15
是相关的并且在其他表中有记录,因此rdbms将抛出引用完整性错误。
处理此类删除取决于您的业务规则。是否应首先删除相关记录,或者如果在其他表中使用该记录,则可以阻止用户删除该记录。
答案 1 :(得分:0)
这取决于与发票和供应商之间关系的性质:
发票是否可以在没有供应商的情况下存在?如果可以,您可以决定取消引用已删除的supplir的所有列。如果不能,您可以决定删除属于已删除供应商的发票(如果您可以将发票视为供应商对象的子对象),或者您可以阻止删除供应商因为有任何发票可以参考它。
答案 2 :(得分:0)
详细说明@DanBracuk的评论。
在表InActive bit NOT NULL DEFAULT 0
中添加一列。
当您“删除”该供应商将其设置为1并且不再在您的用户界面中显示它时,供应商的主列表除外,以便可以将其重新打开
大多数商业会计软件包使用类似的东西,在大多数情况下,如果您知道非活动供应商的名称,您可以将其输入到下拉列表中(并且它将被接受)但它不会出现在下拉列表中。