Database 依赖数据库中的一个字段

Database 依赖数据库中的一个字段,database,validation,architecture,Database,Validation,Architecture,在我提问之前,让我先说明一下背景。 我们致力于发票系统,我们创建发票,验证发票并支付发票 数据库架构包含以下表: 发票 发票项目 收信人 因此,我们验证每个发票项目的数量,并将其与收到的项目数量进行检查(可能相等、较小或较大)。 过程是这样的: 假设发票项目数量为50 我们在发票项上有一个名为credit的字段,该字段在创建时被记入发票项数量的贷方。(表示要验证50个数量) 我们从各种来源接收项目,并在收到项目时及时更新。 假设我们最初有25件物品。 因此,我们将发票项目的信用减少25,并将收到

在我提问之前,让我先说明一下背景。 我们致力于发票系统,我们创建发票,验证发票并支付发票

数据库架构包含以下表:

发票
发票项目
收信人

因此,我们验证每个发票项目的数量,并将其与收到的项目数量进行检查(可能相等、较小或较大)。 过程是这样的:

假设发票项目数量为50

我们在发票项上有一个名为credit的字段,该字段在创建时被记入发票项数量的贷方。(表示要验证50个数量)

我们从各种来源接收项目,并在收到项目时及时更新。 假设我们最初有25件物品。 因此,我们将发票项目的信用减少25,并将收到的项目标记为已完成。 之后,我们得到了另外25个,我们通过减少剩余25个信用来验证

因此,积分现在为0。 这意味着发票已完全验证。因此,我们发送发票进行付款

由于最近开发人员的错误,发生了以下事情

我们没有将发票项目的信用设置为发票项目数量。因此在创建时基本为零。 因此,我们的系统认为其已验证,并向其发送了付款。 两个月后,我们才意识到发票没有得到验证

因此,如果信用证为0,那么现在我们有多个检查来拒绝创建发票

除了进行多次检查外,我们是否有办法解决高度依赖一列的问题。 (此处,发票项目的贷方为0,且未经验证就支付了每张发票)


我正在数据库(架构)级别或应用程序级别寻找任何类型的解决方案。

这个问题听起来更像是关于默认列值的问题。您可以将该默认值设置为null,以显式显示“我还没有收到该值的数据”,并继续获取该null值(因为anything+null被设置为null)

另一种方法是创建某种标志列,明确表示“此行尚未处理,不要将该零视为OK”

此外,您还可以验证使用您已经获得的一些数据(如时间戳列或内部联接)是否只能在ok条件下生成行

对于任何解决方案,都可能在模式和应用程序级重构中驱动您