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