Sql 值的列范围取决于另一列

Sql 值的列范围取决于另一列,sql,database-design,relational-database,database-schema,Sql,Database Design,Relational Database,Database Schema,我正在设计一个小型数据库,其中包含一个表,该表有一列,其可能值的范围取决于另一列的值(在同一个表中),即 表A 字段_a(fk) 现场(fk) 字段_b可以假定的值范围取决于字段_b中包含的值 我的解决方案是在表a中将字段a和字段b组合在一起,并创建一个具有以下内容的中间表: 表A 字段_ab(fk到表B行) 表B 字段_a(fk) 现场(fk) 这样,表A字段_ab中的fk只能指向字段_A和字段_b的有效组合(假设表b已正确填充) 这看起来真的很尴尬,尤其是对于字段a或字段b的查询,所以我知道

我正在设计一个小型数据库,其中包含一个表,该表有一列,其可能值的范围取决于另一列的值(在同一个表中),即

表A 字段_a(fk)

现场(fk)

字段_b可以假定的值范围取决于字段_b中包含的值

我的解决方案是在表a中将字段a和字段b组合在一起,并创建一个具有以下内容的中间表:

表A 字段_ab(fk到表B行)

表B 字段_a(fk)

现场(fk)

这样,表A字段_ab中的fk只能指向字段_A和字段_b的有效组合(假设表b已正确填充)

这看起来真的很尴尬,尤其是对于字段a或字段b的查询,所以我知道我做了一些根本错误的事情——可能与正规形式有关


有人能为我的问题提出正确的解决方法吗?

考虑使用插入触发器更新计算值。

触发器不是创建后“设置默认值”的可行方法,像计算属性一样?预先确定每个可能的
字段a
字段b
的有效值是否可行?范围字段b的值可以假定取决于字段a的值,即不是字段b的实际值。这意味着触发器将无法计算该值。