我有一个关于我正在设计并确保它被规范化的数据库的快速问题......
我有一个客户表,主键是 customerId。它有一个 StatusCode 列,该列有一个反映客户帐户状态的代码,即。1 = 打开,2 = 关闭,3 = 暂停等...
现在我想在客户表中有另一个字段来标记是否允许暂停帐户...某些客户如果违反交易条款将被自动暂停...其他人则不会...所以相关表字段将如下所示:
客户 (CustomerId(PK):StatusCode:IsSuspensionAllowed)
现在这两个字段都取决于主键,因为除非您知道特定客户,否则您无法确定特定客户的状态或是否允许暂停,当然当 IsSuspensionAllowed 字段设置为 YES 时,客户不应该拥有状态代码 3(暂停)。
从上面的表格设计看来,除非在我的表格中添加检查约束,否则可能会发生这种情况。我看不出如何将另一个表添加到关系设计中以强制执行此操作,因为只有在 IsSuspensionAllowed 设置为 YES 且 StatusCode 设置为 3 时,两者相互依赖。
所以在我冗长的解释之后,我的问题是:这是一个规范化问题,我没有看到一个关系设计会强制执行这个......或者它实际上只是一个应该通过检查约束来强制执行的业务规则和表实际上仍然是规范化的。
干杯,
史蒂夫