我有以下表格:
dbo.Order
ID SourceLinkID OverrideQueueID
dbo.SourceLink
ID SourceInputID SourceOutputID
dbo.QueueSourceLink
ID QueueID SourceLinkID
dbo.Queue
ID
通常我们会从dbo.Order到dbo.QueueSourceLink获取订单队列。允许用户通过在dbo.Order表的OverrideQueueID中保存QueueID来覆盖此队列。这基本上使我必须在我的所有必须获取订单的QueueID的查询上执行COALESCE或UNION ALL。
我正在寻找有关重新设计此表的建议,或更好的方法来处理这个问题。我不能将QueueID放在dbo.Order表中,因为用户可以随时将SourceLinkID移动到不同的队列,所以每次发生这种情况时我都必须更新dbo.Order表。一旦dbo.Order被覆盖,它就会一直被覆盖,这就是最后的队列。