MS 中外键的负值 SQL

Negative value for Foreign Key in MS SQL

我将创建一个带有批准工作流数据库的请求,但后来我又想在外列中使用负值,特别是在分配给应该分配给谁时。如果分配给特定用户,我将其设置为正值 (> 0),如果分配给组或集群,则将其设置为负值 (< 0)。

使用过这类数据库的人能否就我将要做的事情给出一些想法,如果它好与不好,为什么?

我试图通过将 assigned_to_id 设置为负值来合并 assigned_to_id 与 assigned_to_cluster_id,这将是 cluster_id 的绝对值。仅当它被分配到一个集群时

我明白你只想为 assigned_to_idassigned_to_cluster_id

使用一列

因此,当它是负值时,它将指向 table A 中的一行,而当它是正值时,它将指向 table B

中的一行

如果是这样,请不要这样做。
这在关系数据库中是不可能的,如果那是你想要的,那么你不能将它标记为外键,你将不得不重新发明轮子并自己完成数据库现在为你做的所有工作

这意味着放弃外键约束,从而放弃关系完整性

还有很多额外的编码需要您完成

你这样做到底想达到什么目的?

保留两列,将它们保留为外键字段,如果这是问题所在,只需在 select 语句中写一个案例

select rw.ID,
       ...,
       case when rw.assigned_to_id is not null then a.name
            when rw.assigned_to_cluster_id is not null then b.name
            else 'not assigned'
       end as assigned_to
from   request_workflow rw
  left outer join tableA a on rw.assigned_to_id = a.id
  left outer join tableB b on rw.assigned_to_cluster_id = b.id